Karma + Jasmineを使用したテストでAngularJSアプリをセットアップしました。大きなJSONオブジェクトを受け取り、それをアプリの他の部分でより使いやすい形式に変換し、変換されたオブジェクトを返す、テストしたい関数があります。それでおしまい。
私のテストでは、モックJSONコンテンツのみを含む個別のJSONファイル(* .json)が必要です。スクリプトはありません。テストでは、JSONファイルを読み込んで、テストしている関数にオブジェクトを送り込めるようにしたいと思います。
http://dailyjs.com/2013/05/16/angularjs-5/で説明されているように、モックファクトリ内にJSONを埋め込むことができることはわかっていますが、JSONをスクリプトに含めないでください。ストレートJSONだけです。ファイル。
私はいくつかのことを試しましたが、私はこの分野ではかなり初心者です。まず、JSONファイルを含めるようにKarmaを設定して、それが何をするかを確認します。
files = [
...
'mock-data/**/*.json'
...
]
その結果、次のようになりました。
Chrome 27.0 (Mac) ERROR
Uncaught SyntaxError: Unexpected token :
at /Users/aaron/p4workspace4/depot/sitecatalyst/branches/anomaly_detection/client/anomaly-detection/mock-data/two-metrics-with-anomalies.json:2
そこで、ファイルを「含める」のではなく、ファイルを提供するように変更しました。
files = [
...
{ pattern: 'mock-data/**/*.json', included: false }
...
]
提供されるだけなので、仕様内から$ httpを使用してファイルをロードしようと思いました。
$http('mock-data/two-metrics-with-anomalies.json')
受け取った仕様を実行したとき:
Error: Unexpected request: GET mock-data/two-metrics-with-anomalies.json
私の理解では、これは$ httpBackendからの模擬応答を期待していることを意味します。だから...この時点では、Angularユーティリティを使用してファイルをロードする方法がわからなかったので、jQueryを試して、少なくともそれを機能させることができるかどうかを確認したいと思いました。
$.getJSON('mock-data/two-metrics-with-anomalies.json').done(function(data) {
console.log(data);
}).fail(function(response) {
console.log(response);
});
その結果、次のようになります。
Chrome 27.0 (Mac) LOG: { readyState: 4,
responseText: 'NOT FOUND',
status: 404,
statusText: 'Not Found' }
私はチャールズでこのリクエストを検査し、
/mock-data/two-metrics-with-anomalies.json
Karmaによって「インクルード」されるように構成した残りのファイルは、たとえば次の場所で要求されています。
/base/src/app.js
どうやらカルマはファイルを提供するためにある種のベースディレクトリを設定しているようです。キックの場合、jqueryデータリクエストを次のように変更しました
$.getJSON('base/mock-data/two-metrics-with-anomalies.json')...
そしてそれはうまくいきます!でも今は汚れてシャワーを浴びる必要があります。私が再びきれいに感じるのを手伝ってください。