我正在尝试使用业力运行单元测试,我收到错误You need to include some adapter that implements __karma__.start method!
。我尝试使用grunt
和karma start
命令运行。我做谷歌搜索,所有的解决方案都没有成功。不知道我做错了什么。我在karma.conf.js文件的插件下包含了带有karma-jasmine的右适配器,该适配器具有__karma__.start
方法。这是我的配置文件: -
module.exports = function(config){
config.set({
// root path location that will be used to resolve all relative paths in files and exclude sections
basePath : '../',
files : [
'bower_components/angular/angular.js',
'bower_components/angular-mocks/angular-mocks.js',
'node_modules/requirejs/require.js',
'node_modules/karma-jasmine/lib/adapter.js',
'app.js',
'mainapp/mainapp.js',
'mainapp/notes/notes.js',
'mainapp/notes/partial/create/create.js',
'mainapp/notes/partial/create/create-spec.js'
],
// files to exclude
exclude: [
'bower_components/angular/angular/*.min.js'
],
// karma has its own autoWatch feature but Grunt watch can also do this
autoWatch : false,
// testing framework, be sure to install the correct karma plugin
frameworks: ['jasmine', 'browserify', 'requirejs'],
// browsers to test against, be sure to install the correct browser launcher plugins
browsers : ['PhantomJS'],
// map of preprocessors that is used mostly for plugins
preprocessors: {
'mainapp/notes/partial/create/create-spec.js' : ['browserify']
},
reporters: ['progress'],
// list of karma plugins
plugins : [
'karma-teamcity-reporter',
'karma-chrome-launcher',
'karma-phantomjs-launcher',
'karma-babel-preprocessor',
'karma-requirejs',
'karma-jasmine',
'karma-browserify'
],
singleRun: true
})}
答案 0 :(得分:0)
使用requirejs
框架会关闭__karma__.start
的自动调用。您需要创建一个文件,a)配置RequireJS,b)调用__karma__.start
来完成测试。这是一个例子。它会扫描Karma所服务的文件,以查找包含测试的文件。这基于命名约定,任何以spec.js
或test.js
结尾的文件都是测试文件。它将文件名转换为模块名称。然后它配置RequireJS。它做的一件事是将所有测试模块作为deps
传递,以便立即加载所有测试模块。它将__karma__.start
设置为callback
,以便在加载deps
中传递的所有模块时,测试开始。
var allTestFiles = [];
var TEST_REGEXP = /(spec|test)\.js$/i;
Object.keys(window.__karma__.files).forEach(function(file) {
if (TEST_REGEXP.test(file)) {
// Normalize paths to RequireJS module names.
allTestFiles.push(file);
}
});
require.config({
baseUrl: '/base',
paths: {
'chai': 'node_modules/chai/chai',
'chai-jquery': 'node_modules/chai-jquery/chai-jquery',
'jquery': 'node_modules/jquery/dist/jquery.min',
'underscore': '//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min',
'sn/sn-underscore': 'static/scripts/sn/sn-underscore',
'vendor/jquery-ui': '//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min'
},
deps: allTestFiles,
callback: window.__karma__.start
});
您需要在karma.conf.js文件的files
参数中包含此文件。由于您使用requirejs
框架,因此您只需将其放在列表中的第一位。例如,如果您调用文件test-main.js
(如Karma文档中所示):
files: [
'test-main.js',
...
]
如果您通过在files
中列出RequireJS来加载它,则需要在RequireJS之后添加test-main.js
。