私はジャスミン/カルマを使って角度サービスの単体テストを作成しようとしています。私は似たようなサービステストをしていますが、うまくいきます。しかし、これにはいくつかの依存関係があり、別のモジュールにあり、インジェクションでサービスが見つからないだけです。ユニットテスト角サービス、beforeEachインジェクションは実行されません
サービスは次のようになります。 bService
は同じモジュールにありますが、commonFactory
とcommonService
は別のモジュール、たとえばcommonModule
にあります。
(function() {
'use strict';
angular
.module('myService')
.service('aService', aService);
aService.$inject = [
'commonFactory',
'commonService'
'bService'
];
function aService (
commonFactory,
commonService,
bService
) {
};
return {
codeIWantToTest: CodeIWantToTest;
}
function CodeIWantToTest() {
console.log('surprise!');
}
})();
マイジャスミンのテストは次のようになります。
describe('myService.aService', function() {
'use strict';
var aService;
// I tried adding beforeEach(module('commonModule')); too, but that didn't do anything
beforeEach(module('myService'));
beforeEach(function() {
inject(function(_aService_) {
console.log('getting aService');
aService = _aService_;
});
});
it('tests my service is defined', function() {
expect(myService).toBeDefined();
});
});
このテストが失敗しました。 myService
が定義されておらず、注入機能のconsole.log
が起動しません。私のkarma.conf.js
は、基本的に依存関係をサービスに注入された順番で表示し、次にサービスとテストを追加します。
インジェクションがサービスを取得しない原因は何ですか?私は何が欠けていますか?私はcommonService
の同様のテストをしており、うまく動作すると言いました。だから私はうんざりです。
通常、サービスをテストするのではなく、サービスの結果をコントローラでテストします。 –
編集されたコードで、 'bService'に' ''が足りませんでした。場合は、SOにコピーするだけで問題ではなかった。 – ste2425
'aService = _aService_'の最後に' _'がありません。 – shelbydz