2016-09-13 9 views
1

Angular 1.5、TSify、およびKarmaを使用してテストを設定しようとしています。私は非常に近いんだけど、私は、私はかなり右持っていない問題に実行しているよ:https://github.com/cmlenz/tsify-test(この例では、角は含まれません)Angular、Karma、tsify、woes

:私はここで説明する設定を以下のよ

角度モックからエラーが発生する:「未定義のプロパティモックを設定できません」

これは時間的なものでもスコープのものでもなければなりません。角度変数のスコープをラップすると、モックはそれを見ることができません。いい考えはありません。ただ、それは私の角度のアプリが使用していない - これは私がモックをロードしています方法とは何かを持っている必要があります

frameworks: ['browserify', 'jasmine'], 

    files: [ 
     'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js', 
     './node_modules/angular-mocks/angular-mocks.js', 
     './modules/**/*.spec.ts' 
    ], 

    exclude: [], 

    preprocessors: { 
     '**/*.ts': 'browserify' 
    }, 

    browserify: { 
     debug: true, 
     plugin: [ 
      ['tsify'] 
     ] 
    }, 

:ここ

は私のkarma.conf.jsファイルの関連部分ですテストは、それと関係がある必要があります。

ヒント

+1

あなたの 'ファイル'配列には、**すべての**テストに必要なファイルが含まれている必要があります。 'angular.js'とあなたのアプリケーションファイルはどこにありますか? – Phil

+1

あなたの設定から、「角モック」がNPMとともにインストールされたことは明らかです。 'angular'もNPMとともにインストールされていて、' .ts'ファイルの 'require'を使ってバンドルに含まれている場合、' angular-mocks'が 'angular'の後にロードする必要があるため、問題が起きる可能性があります。 – cartant

+0

@Phil Browserifyは、すべてのファイル(ベンダーファイルを含む)を単一のバンドルに連結します。私が作業している例では、彼らは**/*。tsグロブをプリプロセッサセクションに登録しました。それが正しくない場合は、私はそれを変更することができます。それは何でしょうか? (私は、各ベンダーのファイルを具体的に指し示す必要はないと仮定しています。なぜなら、browserifyはそれらをバンドルに詰め込んでいるからです)。 – JMarsch

答えて

1

angular-mocksはそれが起こっていない、angular後と現在のカルマのconfiguarionをロードする必要がある - angularそれはあなたの.spec.tsのいずれかのファイルが依存している時に.tsのいずれかのファイルに必要されるまでロードされていません。

一つの解決策は、angularangular-mocksの両方を必要とする追加のファイルを追加すると、ファイルがカルマのfiles構成で.spec.tsファイルの前にあることを保証するだろう。それを確実にしなければならない

files: [ 
    'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js', 
    './require-angular-mocks.js', 
    './modules/**/*.spec.ts' 
], 

preprocessors: { 
    '**/*.js': 'browserify', 
    '**/*.ts': 'browserify' 
}, 

angular

例えば、require-angular-mocks.jsという名前のファイルを作成することができます。

require('angular'); 
require('angular-mocks'); 

をと(node_modulesangular-mocksを置き換える)カルマ構成に追加することができangular-mocksは正しい順序でロードされ、仕様の前にロードされます。 .jsファイルの場合は、カルマのpreprocessors設定に別のエントリが必要です。

+0

オフタスクを引き出しました。これを試してみました。出来た!すごく良かった!ご協力ありがとうございました。私はカルマのパイプラインがどのように機能しているかについてもっと理解したいと思います。あなたはそれについての執筆を知っていますか? – JMarsch

+0

残念ながら、いいえ、私はカルマにとって有用な書面を知らない。私の理解は徐々に[構成文書(http://karma-runner.github.io/1.0/config/configuration-file.html)]を読んで手作業での問題を解決することで徐々に増してきたと思います。 ['files'](http://karma-runner.github.io/1.0/config/files.html)の設定はその要点です。 Karmaはそれを使ってHTMLファイルを構築します。 Browserifyは、 'files 'の' .js'エントリを '