2017-06-19 15 views
1

我想使用茉莉花的beforeAll而不是beforeEach,但angular.mock.module和angular.mock.inject函数不工作在beforeAll,而他们在之前工作。angular.mock.module和angular.mock.inject函数不工作在茉莉花的beforeAll

这是我的测试。 相同的代码在beforeEach方法中工作。

describe("This is a test", function() { 
    beforeAll(module("app")); 

    var vm; 
    beforeAll(function() { 
     angular.mock.module(function ($provide) { 
      $provide.factory("dataService", ["$q", function ($q) { 
       return { 
        getSomeDataById: function() { return $q.resolve({ }); } 
       }; 
      }]); 
     }); 

     angular.mock.inject(function (_$controller_,dataService) { 
      vm = _$controller_("TestController", 
      { 
       dataService: dataService 
      }); 
     }); 
    }); 
}); 

回答

0

我正面临着类似的问题,并使用module.sharedInjector()呼叫解决这对我来说:

describe("This is a test", function() { 

    // Call SharedInjector before any call that might invoke the injector 
    angular.mock.module.sharedInjector(); 

    beforeAll(module("app")); 

    var vm; 
    beforeAll(function() { 
     angular.mock.module(function ($provide) { 
      $provide.factory("dataService", ["$q", function ($q) { 
       return { 
        getSomeDataById: function() { return $q.resolve({ }); } 
       }; 
      }]); 
     }); 

     angular.mock.inject(function (_$controller_,dataService) { 
      vm = _$controller_("TestController", 
      { 
       dataService: dataService 
      }); 
     }); 
    }); 
});