Angular.js プロジェクトのテストをセットアップしようとしていますが、「$injector:nomod, Module 'result' is not available! You or misspelled...」というエラーが表示され続けます。「karma.config.js」内の「files」配列に「result」モジュールを含めていると確信しています。基本的には次のようになります。
files: [
'../javascripts/jquery-2.1.4.min.js',
'../jquery-ui/jquery-ui.min.js',
'../D3/d3.js',
'libs/angular.min.js',
'libs/angular-route.min.js',
'libs/angular-animate.min.js',
'libs/selectize.js',
'libs/angular-selectize.js',
'libs/angular-mocks.js',
'simulator.js',
'*.js',
'services/**/*.js',
'qa/tests-*.js'
],
...
私は当初、メイン モジュールの順序が間違っていると考えていました:「simulator」(「simulator.js」ファイル内で定義) は、次のスタック オーバーフロー スレッドが推奨するように、他のモジュールの前に具体的に上に移動しました。
Karma Jasmine のテスト実行で Angular モジュールを使用できない
役に立ちませんでした。次に、Angular アプリのメイン エントリ ファイル (angular-mocks.js と qa/tests-*.js を除く) と同じ順序でファイルがインポートされるようにしました。ワイルドカードですが、成功しません。
ジャスミンは間違いなくテストファイルに入りますが、モジュールの「結果」をインポートしようとしている行に出くわします:
describe('simulator.chartService', function() {
var chartService;
var graphConfig;
console.log("instantiating module result");
beforeEach(module('result'));
console.log("finished instantiating");
beforeEach(inject(function($injector) {
graphConfig = $injector.get('graphConfig');
chartService = $injector.get('chartService');
}));
it('should be created', function() {
expect(chartService.calcColors(10)).not.toBeNull();
});
});
したがって、2 つの console.log() ステートメントの間でエラーが発生することがわかります。
「karma.config.js」の配列「files」内のファイルの順序にまだ何か問題があると思われます。他のモジュールに依存するメインモジュール「シミュレーター」があります。
angular.module('simulator', ['ngRoute','ngAnimate','selectize','newexp2','newexp','login','edit','exps', 'result','templates','commons'])
モジュール「newexp2」、「newexp」、「login」、「edit」、「exps」、「result」、「templates」はすべてモジュール「commons」に依存しています。
「ファイル」配列内に相互依存モジュールを正しくインポートする方法は? メインモジュールである「simulator.js」を他のすべての上に配置するだけで十分ですか、それとも他のすべてのモジュールを「commons.js」の前に配置する必要がありますか?
もう 1 つの疑惑は、Angular の公式 Web サイト「angular-mocks.js」からダウンロードした angular.js ライブラリ バージョンが、使用している他のモジュールと互換性がない可能性があることです。以前、「angular-animate.js」ファイルでこのような問題がありました。
テストコードを囲んでいる限り$(function(){...})(そして他のすべてのモジュールがそれで囲まれている限り)、モジュールのインポート中にエラーは生成されないため、間にエラーのないresult2つのステートメントが表示され始めconsole.log()ますが、これにより未知のものが生成されますitで囲まないと、$(function(){...})テストitは呼び出されますが、モジュールのresultインポートは失敗します。
これまでのところ、私はほとんど立ち往生しており、どこに移動して何を試すべきかわかりません. どんな提案でも大歓迎です。