如何使用Jasmine进行测试,该AngularJS控制器调用返回Promise的服务方法

我正在使用Jasmine测试框架的AngularJS v1.2.0-rc.3。

我试图断言控制器调用了服务方法。服务方法返回一个承诺。控制器如下所示:

angular.module('test', [])
.controller('ctrl', ['$scope', 'svc', function ($scope, svc) {
  $scope.data = [];
  svc.query()
  .then(function (data) {
    $scope.data = data;
  });
}]);

我想测试解析服务方法的延迟后是否将数据分配给了作用域。我已经为服务创建了一个模拟,单元测试如下所示:

describe('ctrl', function () {
  var ctrl, scope, svc, def, data = [{name: 'test'}];
  beforeEach(module('test'));
  beforeEach(inject(function($controller, $rootScope, $q) {
    svc = {
      query: function () {
        def = $q.defer();
        return def.promise;
      }
    };
    scope = $rootScope.$new();
    controller = $controller('ctrl', {
      $scope: scope,
      svc: svc
    });
  }));
  it('should assign data to scope', function () {
    spyOn(svc, 'query').andCallThrough();
    deferred.resolve(data);
    scope.$digest();
    expect(svc.query).toHaveBeenCalled();
    expect(scope.data).toBe(data);
  });
});

我希望可以调用svc的查询方法,但显然没有。

我按照指南进行了单元测试中的模拟承诺。

我究竟做错了什么?

看来我把间谍放错了地方。当我将它放在beforeEach中时,测试通过了。

  beforeEach(inject(function($controller, $rootScope, $q) {
    svc = {
      query: function () {
        def = $q.defer();
        return def.promise;
      }
    };
    spyOn(svc, 'query').andCallThrough();
    scope = $rootScope.$new();
    controller = $controller('ctrl', {
      $scope: scope,
      svc: svc
    });
  }));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何对控制器中的函数进行单元测试(使用Jasmine),该函数调用工厂服务并返回承诺

来自分类Dev

Angularjs和Jasmine:使用进行Ajax调用的服务测试控制器

来自分类Dev

使用Jasmine进行AngularJS控制器单元测试

来自分类Dev

在AngularJS中调用服务并使用Karma和Jasmine进行测试后,Angularjs单元测试未达到目标,然后成为控制器的一部分

来自分类Dev

在AngularJS中调用服务并使用Karma和Jasmine进行测试后,Angularjs单元测试未达到目标,然后成为控制器的一部分

来自分类Dev

angularjs如何在控制器中进行方法调用

来自分类Dev

如何使用AngularJS在控制器中调用服务函数?

来自分类Dev

如何使用JUnit在控制器中模拟控制器中的服务方法以进行单元测试,以及何时使用模拟控制器

来自分类Dev

在Angular控制器中使用vm进行Jasmine测试

来自分类Dev

如何对依赖Promise的AngularJS控制器进行单元测试?

来自分类Dev

如何使用angularJS-karma-jasmine测试指令的控制器?

来自分类Dev

AngularJS:使用Jasmine与控制器测试指令时控制器未定义

来自分类Dev

如何使用不模拟AJAX调用而进行AJAX调用的功能来测试Angular控制器?

来自分类Dev

如何测试调用私有函数的控制器函数,该私有函数又依次调用angularjs中的异步函数

来自分类Dev

如何使用Jasmine测试AngularJS Controller从Promise中返回的值?

来自分类Dev

如何使用Sinon测试在Promise中设置的AngularJS控制器值

来自分类Dev

如何在AngularJS控制器中测试服务?

来自分类Dev

如何对返回模型的控制器进行单元测试?

来自分类Dev

无法使用AngularJS + RequireJS进行控制器测试

来自分类Dev

如何使用ui-router测试依赖于服务的AngularJS控制器?

来自分类Dev

如何使用ui-router测试依赖于服务的AngularJS控制器?

来自分类Dev

AngularJS控制器作为Jasmine测试并带有Promock服务

来自分类Dev

具有Jasmine中的服务依赖关系的AngularJS单元测试控制器

来自分类Dev

Rspec控制器使用链接方法调用进行测试

来自分类Dev

AngularJs 从控制器调用服务函数

来自分类Dev

Angularjs 从控制器调用服务函数

来自分类Dev

如何监视服务以进行测试-AngularJS / Jasmine

来自分类Dev

如何测试控制器中是否正在调用方法?

来自分类Dev

如何使用Jasmine监视控制器方法?

Related 相关文章

  1. 1

    如何对控制器中的函数进行单元测试(使用Jasmine),该函数调用工厂服务并返回承诺

  2. 2

    Angularjs和Jasmine:使用进行Ajax调用的服务测试控制器

  3. 3

    使用Jasmine进行AngularJS控制器单元测试

  4. 4

    在AngularJS中调用服务并使用Karma和Jasmine进行测试后,Angularjs单元测试未达到目标,然后成为控制器的一部分

  5. 5

    在AngularJS中调用服务并使用Karma和Jasmine进行测试后,Angularjs单元测试未达到目标,然后成为控制器的一部分

  6. 6

    angularjs如何在控制器中进行方法调用

  7. 7

    如何使用AngularJS在控制器中调用服务函数?

  8. 8

    如何使用JUnit在控制器中模拟控制器中的服务方法以进行单元测试,以及何时使用模拟控制器

  9. 9

    在Angular控制器中使用vm进行Jasmine测试

  10. 10

    如何对依赖Promise的AngularJS控制器进行单元测试?

  11. 11

    如何使用angularJS-karma-jasmine测试指令的控制器?

  12. 12

    AngularJS:使用Jasmine与控制器测试指令时控制器未定义

  13. 13

    如何使用不模拟AJAX调用而进行AJAX调用的功能来测试Angular控制器?

  14. 14

    如何测试调用私有函数的控制器函数,该私有函数又依次调用angularjs中的异步函数

  15. 15

    如何使用Jasmine测试AngularJS Controller从Promise中返回的值?

  16. 16

    如何使用Sinon测试在Promise中设置的AngularJS控制器值

  17. 17

    如何在AngularJS控制器中测试服务?

  18. 18

    如何对返回模型的控制器进行单元测试?

  19. 19

    无法使用AngularJS + RequireJS进行控制器测试

  20. 20

    如何使用ui-router测试依赖于服务的AngularJS控制器?

  21. 21

    如何使用ui-router测试依赖于服务的AngularJS控制器?

  22. 22

    AngularJS控制器作为Jasmine测试并带有Promock服务

  23. 23

    具有Jasmine中的服务依赖关系的AngularJS单元测试控制器

  24. 24

    Rspec控制器使用链接方法调用进行测试

  25. 25

    AngularJs 从控制器调用服务函数

  26. 26

    Angularjs 从控制器调用服务函数

  27. 27

    如何监视服务以进行测试-AngularJS / Jasmine

  28. 28

    如何测试控制器中是否正在调用方法?

  29. 29

    如何使用Jasmine监视控制器方法?

热门标签

归档