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/"
};

实际上我设法让它工作了。 我改变了两件事:

  1. 我没有编译测试,因为 tsc --module amd --target ES5 ./src/*.ts 编译了 src 文件夹中的文件,而测试文件在 test 文件夹中。 我为这个而自责... 所以我只是在 .travis.yml 文件
  2. 中添加了 tsc --module amd --target ES5 ./test/*.ts
  3. 最大的问题是 QUnit 测试试图在 require.js 的工作之前开始。我使用的解决方案是告诉 QUnit 不要使用 QUnit.config.autostart = false; 自动启动测试,并让它们在我想要的时候使用 QUnit.start(); 启动我把这个 start() 放在我的 Test.js 文件的末尾这样测试仅在 QUnit 完成加载时才开始。