【问题标题】:Match mock-$httpBackend data from $resource service in jasmine unit test在 jasmine 单元测试中匹配来自 $resource 服务的 mock-$httpBackend 数据
【发布时间】:2016-02-07 01:16:04
【问题描述】:

简单地说:

我可以在 jasmine 单元测试中匹配来自 $resource 服务的 mock-$httpBackend 数据吗?我该怎么做?

我想要什么:

当我使用 $httpBackend 和 $http 服务对我的后端服务进行 Jasmine 测试时,我可以这样做:

  it("should return movie search data from the title", function() {
    var movieData = { title: "The Phantom Menace", description: "A movie.";
    var response = [];

    $httpBackend.when('GET', 'http://www.omdbapi.com/?v=1&s=the%20phantom%20menace')
      .respond(200, movieData);

    moviesService.search('the phantom menace')
      .then(function onSuccess(data) {
        response = data;
      });

    $httpBackend.flush();

    expect(response.data).toEqual(movieData);
  }); // end it

我将《幽灵的威胁》的所有信息都存储在 movieData 中。该测试通过了,因为它将从模拟后端接收的数据与应有的数据 (movieData) 进行比较。

我得到了什么:

当我使用 $httpBackend 和 $resource 服务对我的后端服务进行 Jasmine 测试时,情况有所不同。

 it("retrieves a bunch objects", function() {
    var result = {}, testArray = [];
    var dataToCheck = [
      { id: 1, "des": "This is one."},
      { id: 2, "des": "This is two."},
      { id: 3, "des": "This is three."}
    ];

    $httpBackend.whenGET('movies/api')
      .respond(dataToCheck);

    MovieResource.query().$promise.then(function (data) {
      result = data;
    });

    $httpBackend.flush();

    angular.forEach(result, function (resource) {
      testArray.push(resource);
    })

    expect(testArray).toEqual(dataToCheck);
  }); // end it

业力告诉我:

预期 [ Resource({ id: 1, des: 'This is one.' }), Resource({ id: 2, des:“这是两个。” }), Resource({ id: 3, des: '这是三个。' }) ] 等于 [ Object({ id: 1, des: 'This is one.' }), Object({ id: 2, des:“这是两个。” }), Object({ id: 3, des: '这是三个。' }) ].

因此,它们不是“对象”,而是“资源”。

感谢您能给我的任何指导。

【问题讨论】:

  • 是否可以将 dataToCheck 中的 JSON 对象转换为资源?

标签: angularjs unit-testing karma-jasmine angular-resource httpbackend


【解决方案1】:

你需要做这样的事情

expect(testArray[0].id).toEqual(dataToCheck[0].id);
expect(testArray[1].id).toEqual(dataToCheck[1].id);
expect(testArray[0].des).toEqual(datatoCheck[0].des);

参考: http://accraze.info/testing-angular-services-using-jasmine/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2020-03-14
    • 2014-09-08
    • 2018-08-09
    相关资源
    最近更新 更多