[英]Sinon, Chai test case with multiple nested functions
我試圖使用JavaScript加載多個外部js。 我有用於注入邏輯的單獨代碼。 當我加載一個js文件時,意味着測試用例工作正常。 但是,當我嘗試加載多個js文件時,測試用例失敗。
Main.js
var externalJs = "abcd.js";
function loadJs() {
window.$script(externalJs);
}
function init(domElement) {
loadJs();
}
module.exports = {
init: init
};
Test.js
/* global assert, sinon*/
describe('Test', function () {
var factory = require('main.js');
it('oad the correct js library', function(){
window.$script = sinon.spy();
factory.init();
sinon.assert.calledOnce(window.$script);
});
});
上面的代碼工作正常。 但是,當我嘗試加載多個外部文件時,測試用例失敗。
Main.js
var externalJs = [ "abcd.js", "xyz.js"];
function loadJs() {
window.$script(externalJs[0], function(){
window.$script(externalJs[1], function(){
});
});
}
function init(domElement) {
loadJs();
}
module.exports = {
init: init
};
Test.js
/* global assert, sinon*/
describe('Test', function () {
var factory = require('main.js');
it('oad the correct js library', function(){
window.$script = sinon.spy();
factory.init();
sinon.assert.calledTwice(window.$script);
});
});
錯誤詳情:
expected $script to be called twice but was called once
有解決此問題的想法。
問題在於,第一次調用window.$script
不會調用作為參數提供的函數回調(在本例中,是對window.$script
另一次調用)。
代替使用sinon間諜,請嘗試使用存根。 使用存根,您可以告訴sinon自動調用它收到的任何函數參數。
window.$script = sinon.stub();
// configure the stub to automatically call any callbacks supplied
window.$script.yields();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.