我和 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 会抛出错误“模块未定义”。
老实说,我做错了什么?