4

我们使用 Karma 和 Mocha 以及 Squire 来模拟使用 RequireJs 加载的依赖项。没有 Squire,我们的测试运行良好,但是一旦我们初始化 Squire 对象,一切都开始崩溃:

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

我们发现有时 Karma 报告没有运行测试(即使在测试函数中设置的断点会被命中),有时它会报告不应该失败的随机错误。业力只是有点疯狂。

我如何使用 Squire 而不会让我的测试变得疯狂?

4

1 回答 1

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();
    }
});

现在,我没有在 中定义 deps 和回调,而是在test-main.jsrequirejs.config的末尾添加了以下代码:

// load all tests
require(tests, function () {
    // start test run once requirejs is done
    mocha.setup('bdd');
    mocha.ignoreLeaks();
    mocha.run();
});

一切都恢复正常了!非常感谢 GitHub 上的@FabienDeshayes。

于 2013-06-20T05:25:46.630 回答