我有一个没有requirejs的基于业力的测试的工作实现,我决定在它变得太大之前我应该添加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
答案 0 :(得分:0)
您使用的是哪种版本的jquery-jasmine?尝试将jquery更新到最新版本(如果要支持旧浏览器,则为2.1.0或1.9.0)。我有一些问题用jquery 1.7.0运行jasmine-query,更新jquery为我修复它。
此外,jQuery 1.4.2已经很老了(2010年1月14日发布了1.4.0)所以更新不会是个坏主意!
答案 1 :(得分:0)
我相信我找到了解决这个问题的方法。奇怪的是,文件列表中的“模式”子属性似乎要求它是一个实际的模式,而不是一个只能匹配单个文件的路径。
一旦我在“karma.conf.js”中更改了以下内容:
{pattern: "src/test/webapp/js/libs/jasmine-query.js", included: false},
为:
{pattern: "src/test/webapp/js/libs/*.js", included: false},
它停止抱怨。