grunt not 运行 Qunit 测试正确
grunt not running Qunit tests correctly
情况:我目前正在使用 QUnit 在 TypeScript/Javascript 中测试一个项目,当我在浏览器中 运行 时一切正常.
问题:我正在尝试使用 g运行t 以 运行 无头模式下的 QUnit 测试(我需要它进行持续集成测试)和测试不 运行 正确。
配置
这是我目前的设置方式:
Gruntfile.js
package.json
src/
- Ts source files
test/
- config.js
- Test.ts
- Test.js
- test.html
Gruntfile.js
/*global module:false*/
module.exports = function(grunt) {
grunt.initConfig({
connect: {
server: {
options: {
port: 8000,
base: '.'
}
}
},
qunit: {
all: {
options: {
urls: [
'http://localhost:8000/test/test.html'
]
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.registerTask('test', ['connect', 'qunit']);
};
package.json
{
// Name, version, description, repo and author fields...
"engines": {
"node": ">= 0.10.0"
},
"devDependencies": {
"grunt": "~0.4.5",
"grunt-contrib-watch": "~0.6.1",
"grunt-contrib-connect": "~0.9.0",
"grunt-contrib-qunit": "~0.5.2"
}
}
然后我有一个 .travis.yml 文件来 运行 所有这些。我不知道它是否真的很重要,因为测试在 travis 或我的本地环境中都没有 运行,但无论如何它就在这里:
language: node_js
node_js:
- "0.11"
- "0.10"
before_install:
- "npm install grunt --save-dev"
- "npm install -g grunt-cli"
install:
- "npm install"
- "npm install -g typescript"
script:
- "tsc --module amd --target ES5 ./src/*.ts"
- "grunt test --verbose --force"
这是 travis 构建中出错的部分:http://puu.sh/eKpWj/35614680e1.png
(我目前有大约 20 个断言在我 运行 浏览器中通过时通过。此外,打字稿编译 运行 没问题。)
编辑:正如有人问的那样,这里是 Test.html 文件的内容:http://pastebin.com/LN3igmjc
编辑 2:这也是 config.js 的内容:
var require = {
baseUrl: "../src/"
};
实际上我设法让它工作了。
我改变了两件事:
- 我没有编译测试,因为
tsc --module amd --target ES5 ./src/*.ts
编译了 src
文件夹中的文件,而测试文件在 test
文件夹中。 我为这个而自责...
所以我只是在 .travis.yml
文件 中添加了 tsc --module amd --target ES5 ./test/*.ts
- 最大的问题是 QUnit 测试试图在 require.js 的工作之前开始。我使用的解决方案是告诉 QUnit 不要使用
QUnit.config.autostart = false;
自动启动测试,并让它们在我想要的时候使用 QUnit.start();
启动我把这个 start() 放在我的 Test.js
文件的末尾这样测试仅在 QUnit 完成加载时才开始。
情况:我目前正在使用 QUnit 在 TypeScript/Javascript 中测试一个项目,当我在浏览器中 运行 时一切正常.
问题:我正在尝试使用 g运行t 以 运行 无头模式下的 QUnit 测试(我需要它进行持续集成测试)和测试不 运行 正确。
配置 这是我目前的设置方式:
Gruntfile.js
package.json
src/
- Ts source files
test/
- config.js
- Test.ts
- Test.js
- test.html
Gruntfile.js
/*global module:false*/
module.exports = function(grunt) {
grunt.initConfig({
connect: {
server: {
options: {
port: 8000,
base: '.'
}
}
},
qunit: {
all: {
options: {
urls: [
'http://localhost:8000/test/test.html'
]
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.registerTask('test', ['connect', 'qunit']);
};
package.json
{
// Name, version, description, repo and author fields...
"engines": {
"node": ">= 0.10.0"
},
"devDependencies": {
"grunt": "~0.4.5",
"grunt-contrib-watch": "~0.6.1",
"grunt-contrib-connect": "~0.9.0",
"grunt-contrib-qunit": "~0.5.2"
}
}
然后我有一个 .travis.yml 文件来 运行 所有这些。我不知道它是否真的很重要,因为测试在 travis 或我的本地环境中都没有 运行,但无论如何它就在这里:
language: node_js
node_js:
- "0.11"
- "0.10"
before_install:
- "npm install grunt --save-dev"
- "npm install -g grunt-cli"
install:
- "npm install"
- "npm install -g typescript"
script:
- "tsc --module amd --target ES5 ./src/*.ts"
- "grunt test --verbose --force"
这是 travis 构建中出错的部分:http://puu.sh/eKpWj/35614680e1.png
(我目前有大约 20 个断言在我 运行 浏览器中通过时通过。此外,打字稿编译 运行 没问题。)
编辑:正如有人问的那样,这里是 Test.html 文件的内容:http://pastebin.com/LN3igmjc
编辑 2:这也是 config.js 的内容:
var require = {
baseUrl: "../src/"
};
实际上我设法让它工作了。 我改变了两件事:
- 我没有编译测试,因为
tsc --module amd --target ES5 ./src/*.ts
编译了src
文件夹中的文件,而测试文件在test
文件夹中。 我为这个而自责... 所以我只是在.travis.yml
文件 中添加了 - 最大的问题是 QUnit 测试试图在 require.js 的工作之前开始。我使用的解决方案是告诉 QUnit 不要使用
QUnit.config.autostart = false;
自动启动测试,并让它们在我想要的时候使用QUnit.start();
启动我把这个 start() 放在我的Test.js
文件的末尾这样测试仅在 QUnit 完成加载时才开始。
tsc --module amd --target ES5 ./test/*.ts