我在angularJS应用程序中使用单元测试。这是我对服务的测试规范:
describe('service', function () {
var service = {};
var $httpBackend;
beforeEach(module('myApp'));
beforeEach(inject(function (_service_, _$httpBackend_) {
service = _service_;
$httpBackend = _$httpBackend_;
}));
it('should return test message', function () {
var response;
var test = "This is a test";
$httpBackend.when('GET', '/api/Account/GetTest')
.respond(200, test);
service.getTest().then(function (data) {
response = data;
});
expect(response).toEqual(test);
});
});
而且,这是我服务中的getTest
功能:
var getTest = function () {
return $http.get("api/Account/GetTest");
};
为什么我收到以下错误:
错误:意外请求:GET api / Account / GetTest
我还想过如果我从规范中的url中删除斜杠,错误将更改为此(我不知道为什么):
错误:意外请求:GET /app/views/login.html
答案 0 :(得分:0)
正确的测试是删除斜线。你得到的错误:
错误:意外请求:GET /app/views/login.html
暗示angular正在尝试意外下载模板。但是,由于您使用的是模拟$ http,因为意外请求而导致错误。
你可以添加如下内容:
$httpBackend.when('GET', '/app/views/login.html')
.respond(200, '');
错误可能会消失,但是:
我建议您查看代码并找出加载登录模板的原因(很可能是您无意中加载了指令或组件)。然后你可以确定它是否确实应该成为测试的一部分,或者你是否应该以某种方式将其存在。
您可能还需要为其他模板执行此操作。