首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我试着在我的karma测试中添加requirejs,现在得到"script error for: jasmine-jquery“。

我试着在我的karma测试中添加requirejs,现在得到"script error for: jasmine-jquery“。
EN

Stack Overflow用户
提问于 2014-02-21 11:28:49
回答 2查看 3.3K关注 0票数 0

我有一个可以正常工作的基于karma的测试实现,并且我决定在它变得太大之前,我应该在它中添加requirejs。

我不确定我做了什么,但我现在收到一条我不理解的错误消息。

我对其中一些框架的一个抱怨是,当出现问题时,诊断有点神秘。

这是我在信息层看到的:

代码语言:javascript
复制
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":

代码语言:javascript
复制
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":

代码语言:javascript
复制
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中的文件列表,其中包括一些我还没有使用的文件(我想):

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2014-02-21 12:50:38

您使用的是哪个版本的jquery-jasmine?尝试将jquery更新到最新版本(如果您希望支持旧浏览器,则更新为2.1.0或1.9.0 )。我在jquery 1.7.0中运行jasmine-query时遇到了一些问题,更新jquery会帮我解决这个问题。

另外,jQuery 1.4.2是相当旧的(1.4.0是在2010年1月14日发布的),所以更新一下也不是个坏主意!

票数 0
EN

Stack Overflow用户

发布于 2014-02-22 02:04:12

我相信我找到了解决这个特殊问题的方法。奇怪的是,文件列表中的" pattern“子属性似乎要求它是实际的模式,而不是只能匹配单个文件的路径。

有一次,我在我的“karma.conf.js”中更改了以下内容:

代码语言:javascript
复制
{pattern: "src/test/webapp/js/libs/jasmine-query.js", included: false},

至:

代码语言:javascript
复制
{pattern: "src/test/webapp/js/libs/*.js", included: false},

它停止了对此的抱怨。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21924727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档