2013-06-20 54 views
4

我们使用Karma和Mocha以及Squire来嘲笑加载了RequireJs的依赖项。如果没有乡绅,我们的测试中,当我们初始化一个乡绅对象运行然而细,一切都开始打破:Squirejs导致随机测试间歇性失败或根本不运行

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

我们发现,有时噶报告,没有测试运行(即使内部测试功能设置断点将被打),有时它会报告不应该失败的随机错误。噶只是有点疯狂。

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

回答

5

好吧,我发现随机github issue后解决了这个问题。我噶测试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和回调,我下面的代码添加在试验主要结束.js

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

而且一切都再次顺利!非常感谢GitHub上的@FabienDeshayes。