【发布时间】:2014-02-21 03:28:48
【问题描述】:
我有一个没有 requirejs 的基于 karma 的测试的有效实现,我决定在它变得太大之前添加 requirejs。
我不确定我做了什么,但我现在收到一条我不理解的错误消息。
我对其中一些框架的一个抱怨是,当出现问题时,诊断有点神秘。
这是我在 INFO 级别看到的:
INFO [karma]: Karma v0.10.2 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
WARN [watcher]: Pattern "<projectroot>/src/test/webapp/js/libs/jasmine-query.js" does not match any file.
INFO [Chrome 32.0.1700 (Windows 7)]: Connected on socket ORPzWZDQ7lM8ExSoa6RC
ERROR: 'There is no timestamp for /base/src/test/webapp/js/libs/jasmine-jquery.js!'
WARN [web-server]: 404: /base/src/test/webapp/js/libs/jasmine-jquery.js
Chrome 32.0.1700 (Windows 7) ERROR
Uncaught Error: Script error for: jasmine-jquery
http://requirejs.org/docs/errors.html#scripterror
at <homedir>/AppData/Roaming/npm/node_modules/requirejs/require.js:141
“不匹配任何文件”警告是出现问题的第一个迹象,但我不明白为什么会这样说。
这是我的“karma.conf.js”:
module.exports = function(config) {
'use strict';
config.set({
basePath: '../../../..',
frameworks: ['jasmine', 'requirejs'],
files: [
{pattern: "src/main/webapp/js/**/*.js", included: false},
{pattern: "src/test/webapp/js/**/*.test.js", included: false},
{pattern: "src/test/webapp/js/libs/jasmine-query.js", included: false},
"src/test/webapp/js/test-main.js"
],
exclude: [
],
plugins:[
'karma-jasmine',
'karma-requirejs',
'karma-coverage',
'karma-junit-reporter',
'karma-phantomjs-launcher',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-ie-launcher'
],
preprocessors: {
"src/main/webapp/js/mylibs/*.js": 'coverage'
},
coverageReporter: {
type: "lcov",
dir: "target/karma-coverage"
},
junitReporter: {
outputFile: 'target/surefire-reports/TEST-karma.xml'
},
reporters: ['dots', 'junit'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
captureTimeout: 60000,
singleRun: false
});
};
这是我的“test-main.js”:
var tests = [];
for (var file in window.__karma__.files) {
if (window.__karma__.files.hasOwnProperty(file)) {
if (/\.test\.js$/.test(file)) {
tests.push(file);
}
}
}
requirejs.config({
baseUrl: '/base',
paths: {
'jquery': 'src/main/webapp/js/libs/jquery-1.4.2',
'jasmine-jquery': 'src/test/webapp/js/libs/jasmine-jquery'
},
shim: {
'jasmine-jquery': {
deps: ['jquery']
}
},
deps: tests,
callback: window.__karma__.start
});
如果有帮助,这里是 src/test/webapp 中的文件列表,包括一些我还没有使用的文件(我认为):
src/test/webapp/css/jasmine.css
src/test/webapp/js/data.daily.test.js
src/test/webapp/js/init.js
src/test/webapp/js/karma.conf.js
src/test/webapp/js/libs/boot.js
src/test/webapp/js/libs/console.js
src/test/webapp/js/libs/jasmine-html.js
src/test/webapp/js/libs/jasmine-jquery.js
src/test/webapp/js/libs/jasmine.js
src/test/webapp/js/libs/require-2.1.11.min.js
src/test/webapp/js/test-main.js
【问题讨论】:
标签: javascript jquery requirejs jasmine karma-runner