我一整天都在和蜜蜂搏斗。这是我的测试
injector = angular.injector(['ngMock','ng', 'cockpit']);
var equal = QUnit.assert.equal;
test('loginService', function () {
var app, service, scope, httpBackend;
app = angular.module('cockpit');
app.config(function ($provide) {
$provide.decorator('httpBackend',
angular.mock.e2e.$httpBackendDecorator);
});
httpBackend = injector.get('$httpBackend');
httpBackend.when("PUT", "/login").respond({ userId: 23 });
service = injector.get('loginService');
service.$http = httpBackend;
service.getUserId('easy', 'path');
httpBackend.flush();
equal(service.userId, 23, 'populates userId property');
});在getUserId方法中,$http服务没有put方法,所以当我进行$http.put调用时,它会失败。我一定是把测试设错了。
发布于 2014-02-16 17:21:59
我没有看到角模拟中的$httpBackend是$httpBackend本身的包装器。您只需实例化它并设置它,以便以您想要的方式拦截$http调用。尽管如此,我仍然无法让$httpBackend.flush()工作。角度测试并不像宣传的那么简单。
发布于 2014-02-14 21:28:51
$http和$httpBackend是两种不同的服务。$http使用$httpBackend。$http是具有put()方法的服务。
因此,下面这一行没有意义:
service.$http = httpBackend;https://stackoverflow.com/questions/21653440
复制相似问题