带有 es6 模块的 angular 测试用例中的未知提供者
Unknown provider in test case for angular with es6 module
我必须为控制器编写 karma-jasmine 测试用例
(->
class AddUserController
@$inject = ['$scope', '$http', '$state', 'UserFactory']
constructor: (@$scope, @$http, @$state, UserFactory) ->
@user = new UserFactory()
angular
.module('app', [])
.controller('AddUserController', AddUserController)
)()
但是当我在测试用例中注入 AddUserController 时,它给了我未知的提供者:
describe('add_user_controller', function() {
var addUserController, $httpBackend;
beforeEach(module("app"));
beforeEach(
inject( function($injector, $rootScope) {
addUserController = $injector.get('AddUserController')
})
);
it('should have initialize values', function() {
expect(addUserController.user).toBeDefined();
})
});
谁能猜到,这里出了什么问题。
这是karma.conf.js代码
module.exports = function(config) {
config.set({
frameworks: ['jasmine'],
files: [
'node_modules/angular/angular.js',
'node_modules/angular-mocks/angular-mocks.js',
'*.coffee',
'test/*.coffee'
],
preprocessors: {
'*.coffee': ['coffee']
},
plugin: [
'karma-coffee-preprocessor',
'karma-jasmine',
'karma-chrome-launcher',
],
autoWatch: true,
browsers: ['Chrome']
});
};
我的 addUserController.coffee 和 karma.conf.js 在同一个根(级别)上。
您应该通过将控制器名称传递给 $controller
服务来获取控制器实例。喜欢下面
scope = $rootScope.$new(true);
//inject `$controller` before use it.
addUserController = $controller('AddUserController', { $scope: scope });
我必须为控制器编写 karma-jasmine 测试用例
(->
class AddUserController
@$inject = ['$scope', '$http', '$state', 'UserFactory']
constructor: (@$scope, @$http, @$state, UserFactory) ->
@user = new UserFactory()
angular
.module('app', [])
.controller('AddUserController', AddUserController)
)()
但是当我在测试用例中注入 AddUserController 时,它给了我未知的提供者:
describe('add_user_controller', function() {
var addUserController, $httpBackend;
beforeEach(module("app"));
beforeEach(
inject( function($injector, $rootScope) {
addUserController = $injector.get('AddUserController')
})
);
it('should have initialize values', function() {
expect(addUserController.user).toBeDefined();
})
});
谁能猜到,这里出了什么问题。
这是karma.conf.js代码
module.exports = function(config) {
config.set({
frameworks: ['jasmine'],
files: [
'node_modules/angular/angular.js',
'node_modules/angular-mocks/angular-mocks.js',
'*.coffee',
'test/*.coffee'
],
preprocessors: {
'*.coffee': ['coffee']
},
plugin: [
'karma-coffee-preprocessor',
'karma-jasmine',
'karma-chrome-launcher',
],
autoWatch: true,
browsers: ['Chrome']
});
};
我的 addUserController.coffee 和 karma.conf.js 在同一个根(级别)上。
您应该通过将控制器名称传递给 $controller
服务来获取控制器实例。喜欢下面
scope = $rootScope.$new(true);
//inject `$controller` before use it.
addUserController = $controller('AddUserController', { $scope: scope });