尝试在单元测试中创建$ httpBackend.expectGET,以返回状态409和自定义statusText“TestPhrase”。
查看Angular文档(https://docs.angularjs.org/api/ngMock/service/$httpBackend),它给出了以下返回内容的示例:
{function([status,] data [,headers,statusText])| 功能(功能(方法,网址,数据,标题)}
无法理解如何解释上述示例。
我目前的代码是:
$httpBackend
.expectGET('/example/url')
.respond(function () {
return ['409', ['TestPhrase'], {}];
});
我正在测试的代码是:
$http.get('/example/url').then(function (response) { console.log('success, status ' + response.status); console.log('success, statusText ' + response.statusText); }, function(response) { console.log('error, status ' + response.status); console.log('error, statusText ' + response.statusText); } });
我从此测试中收到的控制台输出是:
'error, status 409'
'error, statusText '
预期输出为:
'error, status 409'
'error, statusText TestPhrase'
答案 0 :(得分:15)
文档说:
响应 -
{function([status,] data[, headers, statusText]) | function(function(method, url, data, headers)}
- response方法接受一组要返回的静态数据或一个可以返回包含响应状态(数字),响应数据(字符串)的数组的函数,响应头(Object)和状态(字符串)的文本。
您正在执行第二个选项,传递一个返回数组的函数。这应该是什么工作。状态文本是第4项。 (为清楚起见,我包含了可选的功能参数。)
$httpBackend
.expectGET('/example/url')
.respond(function (method, url, data, headers) {
return [409, 'response body', {}, 'TestPhrase'];
});