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

时间:2013-06-20 05:25:47

标签: 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
});

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

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

1 个答案:

答案 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。