当我将angular-route 1.5.0更新为1.5.1时,出现错误:
角度单位测试:错误:意外请求:GET
当我启动业力时,我有一条错误消息:
1)调用getAll方法 [应用类别] 错误:意外请求:GET http://myapp.com/app-category?is_active=true不再需要更多请求 /node_modules/angular-mocks/angular-mocks.js
app_category.model.test.js
describe('[App Category]', function () {
beforeEach(module('myApp'));
var $httpBackend, HttpService, AppCategory;
beforeEach(inject(function (_$httpBackend_, _HttpService_, _AppCategory_) {
$httpBackend = _$httpBackend_;
HttpService = _HttpService_;
AppCategory = _AppCategory_;
}));
it('Call getAll method', function () {
var app_category = new AppCategory();
HttpService.mock('GET', 'app-category?is_active=true', 200, [{ code: 'TRAVEL', name: 'Travel' }]);
app_category.getAll({ is_active: true }).then(function (request) {
expect(request.data[0].code).toBe('TRAVEL');
expect(request.data[0].name).toBe('Travel');
});
$httpBackend.flush();
});
});
角mockHTTP.js
(function (angular) {
'use strict';
angular.module('ngMockHTTP', []).service('HttpService', function ($httpBackend, config) {
this.endpoint = config.api.endpoint;
this.mock = function (method, url, status, response) {
switch (method) {
case 'GET':
$httpBackend
.expectGET(this.endpoint + url)
.respond(status, response);
break;
case 'POST':
$httpBackend
.expectPOST(this.endpoint + url)
.respond(status, response);
break;
case 'PUT':
$httpBackend
.expectPUT(this.endpoint + url)
.respond(status, response);
break;
case 'PATCH':
$httpBackend
.expectPATCH(this.endpoint + url)
.respond(status, response);
break;
case 'DELETE':
$httpBackend
.expectDELETE(this.endpoint + url)
.respond(status, response);
break;
}
};
});
})(angular);
我试图重新说明:
case 'GET':
$httpBackend
.expectGET(this.endpoint + url)
.respond(status, response);
break;
由此:
case 'GET':
$httpBackend
.whenGET(this.endpoint + url, {
}).respond(function(){ return [200, response]});
break;
但我有同样的错误
我使用茉莉2.4.1,angularjs 1.5.3,karma 0.13.0
答案 0 :(得分:2)
角度团队已经知道这个错误。
此错误的解决方法是为$ templateCache定义一个虚拟模板。
有关详细信息:link
答案 1 :(得分:1)
我用angularjs 1.5.5更新,它有效!
来自CHANGELOG.md 1.5.5(发布2016-04-18):
" ngRoute:允许ngView包含在异步加载中 模板急切地加载$ route,可能会破坏测试,因为它可能会 请求root或默认路由模板($ httpBackend 什么都不知道。
它将重新应用于v1.6.x,并带有更改通知和 可能是一种在测试中禁用该功能的方法。"