我想用Karma测试我的应用程序。我已经配置它并编写一个简单的测试套件来检查我的应用程序中是否存在控制器。我收到错误“类型错误:无法调用方法方法'等于'未定义。我的测试套件条件如下。请建议
describe('module present', function() {
beforeEach(angular.mock.module('demoapp'));
it('should have a demoCtrl controller', function() {
expect(demoapp.ProductCtrl).not.to.equal(null);
});
});
我的karma.config就像这样
files : [
'Scripts/angular.js',
'Scripts/angular-translate.js',
'Scripts/angular-translate-loader-static-files.js',
'Scripts/angular-mocks.js',
'Scripts/angular-*.js',
'Test/lib/angular/angular-mocks.js',
'Scripts/ProjectScript/app.js',
'Scripts/ProjectScript/DemoData.js',
'Scripts/ProjectScript/TimerController.js',
'Scripts/ProjectScript/**/*.js',
'Test/unit/**/*.js'
],
exclude : [
'Scripts/angular-loader.js',
'Scripts/angular-scenario.js'
],
谢谢和问候 utpal
答案 0 :(得分:3)
试试这个,我希望它有所帮助
beforeEach(module('demoapp'));
var ctrl, scope;
// inject the $controller and $rootScope services
// in the beforeEach block
beforeEach(inject(function($controller, $rootScope) {
// Create a new scope that's a child of the $rootScope
scope = $rootScope.$new();
// Create the controller
ctrl = $controller('ProductCtrl', {
$scope: scope
});
}));
it('should have a demoCtrl controller', function() {
expect(ctrl).not.to.equal(null);
});
答案 1 :(得分:0)
不确定您是否正在显示整个karma.conf.js文件。无论如何,您应该提到要在配置中使用的测试框架。你需要一个属性
frameworks: ["jasmine"]
以下是整个配置的示例。这非常有效。
module.exports = function (config) {
config.set({
basepath: '.',
frameworks: ["jasmine"],
//list of file patterns to load in the browser
files: [
'web/public/lib/jquery/jquery-1.9.1.js',
'web/public/lib/angular/angular.min.js',
'web/public/lib/async/async.js',
'test/client/lib/angular/angular-mocks.js',
'web/public/lib/angular-ui/*.js',
'web/public/js/**/*.js',
'test/client/public/js/**/*.js',
'test/client/public/js/**/*.coffee'
],
preprocessors: {
'web/public/js/**/*.js': ['coverage'],
'**/*.coffee': ['coffee']
},
// use dots reporter, as travis terminal does not support escaping sequences
// possible values: 'dots' || 'progress'
reporters: ['progress', 'coverage'],
coverageReporter: {
type: 'lcov',
dir: 'coverage/'
},
// these are default values, just to show available options
// web server port
port: 8089,
// cli runner port
runnerPort: 9109,
//urlRoot = '/__test/';
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// polling interval in ms (ignored on OS that support inotify)
autoWatchInterval: 0,
// Start these browsers, currently available:
// - Chrome
// - ChromeCanary
// - Firefox
// - Opera
// - Safari
// - PhantomJS
browsers: ['PhantomJS'],
// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun: true
});
};