【发布时间】:2016-11-24 14:37:40
【问题描述】:
我从 AngularJs 开始,在尝试对具有作为依赖项的服务的控制器进行单元测试时遇到问题。该应用程序按预期工作,但不是单元测试。 Jasmine 测试出现以下错误:
Error: [$injector:modulerr] Failed to instantiate module ghhweb.register due to: Error: [$injector:unpr] Unknown provider: $stateProvider
我的模块代码:
var registerModule = angular.module('ghhweb.register',[]);
registerModule.config(function($stateProvider, $locationProvider){
var registerState = {
name: 'register',
url: '/register',
controller: 'RegisterController',
templateUrl: 'modules/register/views/register.html'
};
$stateProvider.state(registerState);
});
我的控制器代码:
var registerController = angular.module('ghhweb.register.controller',[]);
registerController.controller('RegisterController', ['$scope',
'userRestService', function($scope, userRestService){
$scope.callCheckExistingMail = function(){
$scope.userEmail = userRestService.checkExistingMail($scope.userEmail);
};
}]);
我的规范代码:
describe('controller register module unit tests', function(){
describe('check user service implementation', function(){
beforeEach(module('ghhweb.register'));
it('should call checkExistinMail in userRestService', inject(function(
$rootScope, $controller){
// make a userRestService
var userRestService = {
checkExistingMail: function() {}
};
spyOn(userRestService, "checkExistingMail");
controller('RegisterController', {$scope: scope,
userRestService: userRestService });
expect(userRestService.checkExistingMail).toHaveBeenCalled();
}));
});
});
我尝试了很多教程并查看了一些类似这样的帖子:
- angular-unit-test-controllers-mocking-service-inside-controller
- injecting-a-mock-into-an-angularjs-service
我想我在某个地方遇到了配置问题,但我无法解决。
有人有想法吗?
【问题讨论】:
标签: angularjs unit-testing angular-ui-router