AngularJSはかなり新しく、ドキュメントで説明されているように模擬の$ httpBackendが機能するようになりました(http://docs.angularjs.org/api/ngMockE2E.$httpBackendを参照)。GETコードを再現できます。例:
$httpBackend.whenGET('/phones').respond(phones);
ただし、POSTメソッドはangular-mocks.jsエラーで失敗します。これは、POSTで発生するように指定したものです。
$httpBackend.whenPOST('/phones').respond(function(method,url,data){
console.log(data);
phones.push(angular.fromJson(data));
});
これは私がコントローラーからPOSTを呼び出す方法です:
var newPhone = {name:'New Phone'};
$http.post('/forecasts/types.json', newPhone);
そして、これは私が応答としてコンソールに表示するものです:
{"name":"New Phone"} app.js:167
Uncaught TypeError: Cannot read property '2' of undefined angular-mocks.js:876
(anonymous function) angular-mocks.js:876
completeOutstandingRequest angular.js:2930
(anonymous function) angular.js:3209
私のコードはドキュメントとほとんど同じように見えます。POSTされたときに関数が呼び出されますが、実行されない理由がわかりません。
編集(フィドルに関するコメントを寄せてくれたJosh David Millerに感謝します)エラーを再現するフィドルは次のとおりです。http://jsfiddle.net/elcabo/btbds/3/ フィドルはAngularドキュメント(http ://docs.angularjs.org/api/ngMockE2E.$httpBackend)およびmockE2Eの角度フィドル$ httpBackend(http://jsfiddle.net/vojtajina/DQHdk/)
誰かが以前にこれに遭遇したことがありますか、またはこれを攻撃する方法について何かアイデアがありますか?
私は解決策/関連する投稿をかなり広く検索しましたが、何も見つかりませんでしたので、どんなポインタでも大歓迎です。
どうもありがとう。