【发布时间】:2014-08-13 22:37:13
【问题描述】:
经过太多小时后,我终生无法让这个示例正常工作。我正在关注 Ben Lesh 的 excellent guides 在 Angular 中模拟 $http 请求,但由于某种原因,服务请求没有发送。
我已经通过构建一个单独的 HTML DOM 并将我的应用程序和一个微型控制器应用于它来验证该服务是否正常工作。我正在使用 Jasmine 1.3 和 Angular 1.2.9(当然还有 angular-mocks.js)。
这是应用程序:
var app = angular.module('myApp', []);
app.factory('httpBasedService', function($http) {
return {
sendMessage: function(msg) {
return $http.get('something.json?msg=' + msg)
.then(function(result) {
console.log(result.data)
return result.data;
});
}
};
});
还有测试:
describe("httpBasedService ", function () {
var httpBasedService,
mockBackend;
beforeEach(function (){
module('myApp');
inject(function(_$httpBackend_, _httpBasedService_) {
mockBackend = _$httpBackend_;
httpBasedService = _httpBasedService_;
});
});
afterEach(function() {
mockBackend.verifyNoOutstandingExpectation();
mockBackend.verifyNoOutstandingRequest();
});
it('should send the msg and return the response.', function () {
var returnData = {excited: true};
mockBackend.expectGET('something.json?msg=wee').respond(returnData);
var returnedPromise = httpBasedService.sendMessage('wee');
var result;
returnedPromise.then(function(response) {
result = response;
});
mockBackend.flush();
expect(result).toEqual(returnData);
});
});
我收到了Error: No pending request to flush !,当然还有Error: Unsatisfied requests: GET(因为没有发送任何内容)。我观察了网络请求,果然,即使我删除了模拟后端,也没有发送任何请求。
我已经注释掉了一些东西,重组了一些东西,尝试了很多其他的例子,但都无济于事。有人可以帮我吗?
【问题讨论】:
标签: javascript angularjs unit-testing httpbackend