繁体   English   中英

茉莉花间谍和兑现承诺

[英]Jasmine spy and resolving promises

我正在测试使用返回承诺的服务的控制器。 我在测试中模拟了一个服务,并创建了一个spy以便可以测试该服务是否被实际调用。

但是我不断收到这个错误

TypeError: 'undefined' is not a function 
    (evaluating 'spyOn(mockService, 'one').andReturn(deferred.promise)')

我的测试

beforeEach(inject(function($rootScope, $controller, $q) {
  scope = $rootScope.$new();

  mockService = {
    one: function(){
      // mock promise
      var deferred = $q.defer();
      deferred.resolve([
        //my array
      ]);
      return deferred.promise;
    },
    two: function(){
      // mock promise
      var deferred = $q.defer();
      deferred.resolve([
        //my data
      ]);
      return deferred.promise;
    }
  }
  var deferred = $q.defer();
  spyOn(mockService, 'one').andReturn(deferred.promise);

  controller = $controller('MyCtrl', {
    $scope: scope,
    mockService: mockService
  });
}));

it('should call mockService service', function(){
  //causes promises to check to see if they are fulfilled
  scope.$digest();
  expect(mockService.one).toHaveBeenCalled();
});

对于Jasmine 2,您必须使用

spyOn(mockService, 'one').and.returnValue(deferred.promise);

代替andReturn()

阅读文档 如果您要从Jasmine 1迁移到Jasmine 2,则可能还需要阅读this

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM