茉莉花测试中未定义控制器
Controller is undefined in jasmine test
karma.config.js:
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'node_modules/angular/angular.min.js',
'node_modules/angular-mocks/angular-mocks.js',
'node_modules/angular-translate/dist/angular-translate.min.js',
'browser/javascripts/*.js',
'browser/tests/*.spec.js'
],
exclude: [],
preprocessors: {},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
concurrency: Infinity
})
};
home.spec.js:
describe('Home Controller', function() {
beforeEach(
module('pascalprecht.translate'),
module('tradeshiftApp')
);
var $controller;
beforeEach(inject(function(_$controller_){
$controller = _$controller_;
}));
it('should exist', function(){
controller = $controller('HomeController', {
$scope: {}
});
expect(controller).not.toBe(undefined);
})
});
我正在使用 karma-jasmine
,问题如下:我的 app.js
文件有这个模块并且它正在正确加载:
var app = angular.module('tradeshiftApp', ['pascalprecht.translate']);
但是当我尝试模拟我的控制器时,它是
app.controller('HomeController', function ($scope, $req, $window, $translate, $q) {
// some code
});
我收到一条错误消息,显示 HomeController
不是一个函数。如您所见,依赖关系已连接起来,我想一切 应该 没问题。有什么建议吗?
注意:我试过注入$rootScope
并得到$rootScope.$new()
并且成功了。
试试这个:
beforeEach(function() {
angular.module('pascalprecht.translate', [])
angular.mock.module('tradeshiftApp')
}
);
因此,问题出在 'pascalprecht.translate'
模块中。在我的代码中,我有一个连接到上述模块的小依赖项,它包含在我的 HTML 文件中,但不在我的 Karma 配置文件中。伙计们,请小心并警惕您的代码:)
karma.config.js:
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'node_modules/angular/angular.min.js',
'node_modules/angular-mocks/angular-mocks.js',
'node_modules/angular-translate/dist/angular-translate.min.js',
'browser/javascripts/*.js',
'browser/tests/*.spec.js'
],
exclude: [],
preprocessors: {},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
concurrency: Infinity
})
};
home.spec.js:
describe('Home Controller', function() {
beforeEach(
module('pascalprecht.translate'),
module('tradeshiftApp')
);
var $controller;
beforeEach(inject(function(_$controller_){
$controller = _$controller_;
}));
it('should exist', function(){
controller = $controller('HomeController', {
$scope: {}
});
expect(controller).not.toBe(undefined);
})
});
我正在使用 karma-jasmine
,问题如下:我的 app.js
文件有这个模块并且它正在正确加载:
var app = angular.module('tradeshiftApp', ['pascalprecht.translate']);
但是当我尝试模拟我的控制器时,它是
app.controller('HomeController', function ($scope, $req, $window, $translate, $q) {
// some code
});
我收到一条错误消息,显示 HomeController
不是一个函数。如您所见,依赖关系已连接起来,我想一切 应该 没问题。有什么建议吗?
注意:我试过注入$rootScope
并得到$rootScope.$new()
并且成功了。
试试这个:
beforeEach(function() {
angular.module('pascalprecht.translate', [])
angular.mock.module('tradeshiftApp')
}
);
因此,问题出在 'pascalprecht.translate'
模块中。在我的代码中,我有一个连接到上述模块的小依赖项,它包含在我的 HTML 文件中,但不在我的 Karma 配置文件中。伙计们,请小心并警惕您的代码:)