0

情况:我目前正在使用 QUnit 在 TypeScript/Javascript 中测试一个项目,当我在浏览器中运行它们时一切正常。

问题:我正在尝试使用 grunt 在无头模式下运行 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']);

};

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

1 回答 1

0

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

  1. 我没有编译测试,因为tsc --module amd --target ES5 ./src/*.ts编译了文件src夹中的文件,并且测试文件在test文件夹中。我为此而自责... 所以我只是tsc --module amd --target ES5 ./test/*.ts.travis.yml文件中添加了
  2. 最大的问题是 QUnit 测试试图在 require.js 工作之前开始。我使用的解决方案是告诉 QUnit 不要通过使用来自动启动测试,QUnit.config.autostart = false;并让它们在我想要的时候QUnit.start();启动Test.js
于 2015-01-21T15:45:15.697 回答