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

标签 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 报告没有运行测试(即使设置在测试函数中的断点会被命中),有时它会报告不应该失败的随机错误。 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/

相关文章:

unit-testing - KarmaJS、Jasmine、RequireJS 等 : How to Use Require for Testing Modules

javascript - 缓存破坏由 Require.js 优化的网站

angularjs - 如何在 e2e Angular 测试中测试 401 重定向

javascript - 将 requirejs 与 retinajs 一起使用

javascript - 删除 RequireJS 中未使用的 shim 配置?

javascript - 使用 Squire.js 注入(inject)依赖项时未执行 Jasmine 规范

javascript - 如何使用squire模拟内联requirejs依赖项以进行单元测试?

javascript - 在 Karma 中测试 Angular $window.location.href

jasmine - 是否可以使用 karma 运行并行测试