我们正在使用Karma和Mocha以及Squire来模拟使用RequireJs加载的依赖项。没有Squire,我们的测试运行正常,但是一旦我们初始化Squire对象,一切都开始破坏:
define(['squire'], function (Squire) {
var injector = new Squire(); // comment this out and everything works again
});
我们发现有时Karma报告没有运行任何测试(即使测试函数内部设置了断点),有时它会报告不应该失败的随机错误。卡玛只是有点疯狂。
如果没有我的测试疯狂,我如何使用Squire?
答案 0 :(得分:5)
好的,我在找到随机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。