小编Abe*_*oun的帖子

AngularJS在服务测试中注入服务模拟

我一直试图测试一项服务暂时没有用,并希望得到一些帮助.这是我的情况:

我的服务看起来有点像这样

myModule.factory('myService', ['$rootScope', '$routeParams', '$location', function($rootScope, $routeParams, $location) {

  var mySvc = {
    params: {}
  }

  // Listen to route changes.
  $rootScope.$on('$routeUpdate', mySvc.updateHandler);

  // Update @params when route changes
  mySvc.updateHandler = function(){ ... };

  ...
  ...

  return mySvc;

}]);
Run Code Online (Sandbox Code Playgroud)

我想在服务注入'myService'我的测试之前模拟注入的服务,这样我就可以测试下面的初始化代码了

  var mySvc = {
    params: {}
  }

  // Listen to route changes.
  $rootScope.$on('$routeUpdate', mySvc.updateHandler);
Run Code Online (Sandbox Code Playgroud)

我正在使用Jasmine进行测试和模拟.这就是我现在想出来的

describe('myService', function(){
  var rootScope, target;
  beforeEach(function(){
    rootScope = jasmine.createSpyObj('rootScope', ['$on']);

    module('myModule');
    angular.module('Mocks', []).service('$rootScope', rootScope );
    inject(function(myService){
      target = myService; …
Run Code Online (Sandbox Code Playgroud)

unit-testing jasmine angularjs angularjs-service

7
推荐指数
1
解决办法
5198
查看次数