グローバル変数が未定義であると見なしているジャスミン単位テストで問題が発生しています。私は、Squireを使用して、RequireJSを介して注入された依存関係を持ついくつかのクラスを模擬しています。ジャスミン単位テストでグローバル変数が割り当てられていない
私の「サービス」クラス(service.js)「キャッシュ」依存関係を模擬する
define(['durandal/system', 'cache'],
function (system, cache) {
var dataservice = {
retrieveData: function() {
return cache.getCachedData();
}
};
return dataservice;
});
マイ金具:ここに私のユニットテストのトリムダウン一例です。
define(['Squire'], function (Squire) {
var injector = new Squire();
return {
initialize: function() {
injector.clean();
injector.mock('cache', {
getCachedData: function() {
return { item: "one" };
}
});
return injector;
}
};
});
そして、私の仕様:私のテストを 'が存在しなければならない' は、
define(['dataservice_fixture', 'durandal/system'],
function (testFixture, system) {
var container = testFixture.initialize();
var dataserviceModule;
container.require(['service'], function (preparedDataservice) {
dataserviceModule = preparedDataservice;
});
describe('The data service ', function() {
it('should exist.', function() {
expect(dataserviceModule).toBeDefined();
});
});
});
、dataserviceModuleは未定義です。私のfixture(上のコンテナ)がそれをプルするときには、私はそれが期待されるでしょう。今、define()内の仕様の先頭にある 'service'を引っ張り、そこにdataserviceModuleを設定すると、 。
なぜ私のcontainer.requireは、変数を1つのスコープに設定しないか、テストと実行の間に失われてしまうのですか?私はホイストの周りにthis questionを読んでいますが、私は私のcontainer.require内で同じ変数名を再宣言していません。