相关疑难解决方法(0)

如何在Angularjs Jasmine单元测试中模拟返回承诺的服务?

我有myService使用myOtherService,它进行远程调用,返回promise:

angular.module('app.myService', ['app.myOtherService'])
  .factory('myService', [
    myOtherService,
    function(myOtherService) {
      function makeRemoteCall() {
        return myOtherService.makeRemoteCallReturningPromise();
      }

      return {
        makeRemoteCall: makeRemoteCall
      };      
    }
  ])
Run Code Online (Sandbox Code Playgroud)

为了进行单元测试myService我需要模拟myOtherService,这样它的myService方法返回一个promise.我是这样做的:

describe('Testing remote call returning promise', function() {
  var myService;
  var myOtherServiceMock = {};

  beforeEach(module('app.myService'));

  // I have to inject mock when calling module(),
  // and module() should come before any inject()
  beforeEach(module(function ($provide) {
    $provide.value('myOtherService', myOtherServiceMock);
  }));

  // However, in order to properly construct my mock
  // I need $q, which can …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing mocking jasmine angularjs

149
推荐指数
4
解决办法
13万
查看次数

标签 统计

angularjs ×1

jasmine ×1

javascript ×1

mocking ×1

unit-testing ×1