【问题标题】:Angular $httpBackend.expectGET - respond with 409 status & custom statusTextAngular $httpBackend.expectGET - 以 409 状态和自定义状态文本响应
【发布时间】:2014-05-29 15:52:40
【问题描述】:

尝试在单元测试中创建 $httpBackend.expectGET 以返回状态 409 和自定义 statusText 'TestPhrase'。

查看 Angular 文档 (https://docs.angularjs.org/api/ngMock/service/$httpBackend),它给出了以下返回示例:

{function([status,] data[, headers, statusText]) | 函数(函数(方法、url、数据、标题)}

无法理解如何解释上述示例。

我当前的代码是:

      $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'

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    文档说:

    respond{function([status,] data[, headers, statusText]) | function(function(method, url, data, headers)} – respond 方法接受一组要返回的静态数据或一个函数,该函数可以返回一个包含响应状态(数字)、响应数据(字符串)、响应的数组标题(对象)和状态文本(字符串)。

    您正在执行第二个选项,传递一个返回数组的函数。这是应该工作的。状态文本是第 4 项。 (为了清楚起见,我包括了可选的函数参数。)

    $httpBackend
    .expectGET('/example/url')
    .respond(function (method, url, data, headers) {
        return [409, 'response body', {}, 'TestPhrase'];
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 2017-12-10
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      相关资源
      最近更新 更多