我和Karma / Jasmine度过了一段难关。我只想尝试运行Jasmine网站上的示例规范。
当我在命令行上运行jasmine时,测试运行正常。但是,如果我尝试使用Karma测试运行器运行它们,我会遇到很多问题。
这是我的文件结构
这是我的karma.conf.js文件:
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine', 'requirejs'],
// list of files / patterns to load in the browser
files: [
'node_modules/requirejs/require.js',
'**/test-main.js', {
pattern: 'spec/jasmine_examples/*.js',
included: false
}
],
// list of files to exclude
exclude: ['**/*conf.js'],
...port,browser etc.
这是我的test.main.js文件
var allTestFiles = [];
var TEST_REGEXP = /(spec|test)\.js$/i;
var pathToModule = function(path) {
return path.replace(/^\/base\//, '').replace(/\.js$/, '');
};
Object.keys(window.__karma__.files).forEach(function(file) {
if (TEST_REGEXP.test(file)) {
// Normalize paths to RequireJS module names.
allTestFiles.push(pathToModule(file));
}
});
require.config({
// Karma serves files under /base, which is the basePath from your config file
baseUrl: '/base',
// dynamically load all test files
deps: allTestFiles,
// we have to kickoff jasmine, as it is asynchronous
callback: window.__karma__.start
});
当我运行karma start时,我得到一个404,即PlayerTest.js和SongTest.js不在base /下。但是它们被加载并位于base / spec / jasmine_examples中。此外,PlayerTest.js会抛出错误"模块未定义"。
老实说,我做错了什么?
答案 0 :(得分:0)
我认为你需要在karma.conf.js文件中引用karma-requirejs和karma-jasmine插件 -
config.set({
plugins: [
'karma-jasmine',
'karma-requirejs'
],
来自karma doc,它声明:
请注意,Karma中的所有框架都需要安装额外的插件/框架库(通过NPM)。 其他信息可以在插件中找到。
您不需要在文件部分中包含require.js.