我想使用jasmine的beforeAll而不是beforeEach但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 :(得分:1)
我遇到了类似的问题,使用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
});
});
});
});