Angular $ httpBackend.expectGET - 响应409状态&自定义statusText

时间:2014-05-29 15:52:41

标签: javascript angularjs

尝试在单元测试中创建$ 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'

1 个答案:

答案 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'];
});