2013-06-20 53 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。