我们使用 Karma 和 Mocha 以及 Squire 来模拟加载了 RequireJs 的依赖项。没有 Squire,我们的测试运行良好,但是一旦我们初始化 Squire 对象,一切都开始崩溃:
define(['squire'], function (Squire) {
var injector = new Squire(); // comment this out and everything works again
});
我们发现有时 Karma 报告没有运行测试(即使设置在测试函数中的断点会被命中),有时它会报告不应该失败的随机错误。 Karma 只是有点疯狂。
如何使用 Squire 而不会让我的测试变得疯狂?
最佳答案
好的,我在找到随机 github issue 后解决了这个问题.我的 Karma test-main.js 文件加载了测试并运行了如下回调:
var tests = Object.keys(window.__karma__.files).filter(function (file) {
return /Spec\.js$/.test(file);
});
requirejs.config({
// ... more code here
// ask Require.js to load these files (all our tests)
deps: tests,
// start test run, once Require.js is done
callback: function () {
mocha.setup('bdd');
mocha.ignoreLeaks();
mocha.run();
}
});
现在,而不是在
requirejs.config
中定义 deps 和 callback , 我在 test-main.js 的末尾添加了以下代码:// load all tests
require(tests, function () {
// start test run once requirejs is done
mocha.setup('bdd');
mocha.ignoreLeaks();
mocha.run();
});
一切都恢复正常了!非常感谢 GitHub 上的@FabienDeshayes 为此。
关于requirejs - Squirejs 导致随机测试间歇性失败或根本不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17205904/