Squirejs导致随机测试间歇性地失败或根本不运行

ajb*_*ven 4 requirejs karma-runner squirejs

我们正在使用Karma和Mocha以及Squire来模拟使用RequireJs加载的依赖项.没有Squire,我们的测试运行正常,但是一旦我们初始化Squire对象,一切都开始破坏:

define(['squire'], function (Squire) {
    var injector = new Squire(); // comment this out and everything works again
});
Run Code Online (Sandbox Code Playgroud)

我们发现,有时Karma报告没有运行任何测试(即使测试函数内部设置的断点会被击中),有时它会报告不应该失败的随机错误.卡玛只是有点疯狂.

如果没有我的测试疯狂,我如何使用Squire?

ajb*_*ven 5

好的,我在找到随机github问题后解决了这个问题.我的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();
    }
});
Run Code Online (Sandbox Code Playgroud)

现在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();
});
Run Code Online (Sandbox Code Playgroud)

一切都在游泳!非常感谢GitHub上的@FabienDeshayes.