0
javascriptを使用して複数の外部jをロードしようとしました。私は注入論理のために別々のコードを持っていました。 1つのjsファイルをロードすると、テストケースが正常に動作していることを意味します。 しかし、複数のjsファイルをロードしようとすると、テストケースが失敗しました。複数のネストされた関数を持つSinon、Chaiテストケース
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
は、この問題を修正するための任意のアイデアを持っています。
スクリプトを取得する実際のネットワーク要求がある場合は、テストがスクリプトの読み込みを待つようにするために、it関数にコールバックdone()を追加する必要があります。スクリプトがロードされると、テストで完了したコール – William