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
我的代码看起来与文档几乎相同。该函数在发布到时被调用,但我不知道为什么它不会运行。
编辑(感谢 Josh David Miller 对小提琴的评论)这是一个重现错误的小提琴:http: //jsfiddle.net/elcabo/btbds/3/ 小提琴基于 Angular 文档中的示例(http ://docs.angularjs.org/api/ngMockE2E.$httpBackend)和 mockE2E $httpBackend 的角小提琴(http://jsfiddle.net/vojtajina/DQHdk/)
有没有人遇到过这个问题或者对如何攻击这个有任何想法?
我已经搜索了相当广泛的解决方案/相关帖子,但找不到任何内容,因此将不胜感激任何指针。
非常感谢。