如何在beforeEach块之外使用angular.mock.inject?
我正在尝试使用我们应用程序服务的所有模拟设置一个文件,这些模拟中的方法将是茉莉花间谍,它将返回带有空对象的promise。这是mockService.js
:
define(['angular','angular.mocks'], function () {
return {
UserService: {
read: jasmine.createSpy('UserService.read()')
}
}
});
为了遵循DRY原则,我将这些模拟定义为require.js模块,我的spec文件将需要此模块。这是UsersController.spec.js
:
define([
'angular',
'mockServices',
'angular.mocks',
'app/app.module'
]
但是,我无法让mockServices.UserService.read
回复这样的承诺:
UserService: {
read: jasmine.createSpy('TokensService.read()').and.callFake(function() {
var deferred = $q.defer();
deferred.resolve({});
return deferred.promise;
})
}
因为$ q未定义。我在beforeEach块中使用了angular.mock.inject来访问$ q。
我已经尝试过IIFE注入返回的函数,我得到一个提到currentSpec。$ modules的错误,但我不知道那是什么。
如何在每个人之前访问$ q?