使用Travis-CI进行客户端JavaScript库的测试?

43

我不确定是否应该在客户端JavaScript库中使用Travis-CI,因为它会在Travis-CI服务器上使用NodeJs进行编译。

我想知道是否使用一些类似于Travis-CI这样的持续集成方法对于客户端库是一个好的选择还是不好?

4个回答

37

当然,你应该在客户端库中使用连续集成。

我个人使用PhantomJS(无头浏览器),它已经安装在Travis-CI中。我认为这比Node.js更适合客户端内容。

如果你使用Grunt,那么使用起来会更加容易,你只需要一个简单的Gruntfile.js文件、在浏览器中运行的测试(我使用QUnit)以及一个简单的.travis.yml文件。

Gruntfile.js:

module.exports = function(grunt) {
    // Project configuration.
    grunt.initConfig({
        qunit: {
            files: ['test/index.html']
        }
    });

    // Load plugin
    grunt.loadNpmTasks('grunt-contrib-qunit');

    // Task to run tests
    grunt.registerTask('test', 'qunit');
};

.travis.yml:


(翻译:这是一个文件名为.travis.yml的文件)
before_script:
  - sudo npm install -g grunt

script: grunt test --verbose --force

您可以在我的一个项目中看到它的运作方式GitHub上的源代码)。


1
在package.json文件中将grunt作为devDependency提及,是否可以省去before_script部分的需要? - Andreas Köberle
“see it in action”的链接已失效。 - gbmhunter
@gbmhunter,你说得对,我刚刚修复了它。感谢你的反馈! - Odi
我相信你也需要 grunt.loadNpmTasks('grunt-contrib-qunit'); 才能使其正常工作。我在你提到的仓库的 Gruntfile.js 中看到了这个。 - danvk
@danvk,我觉得你是对的,我在我的示例中加入了它。 - Odi
显示剩余3条评论

26

我开始使用Odi的答案,然后转向gulp来使它正常工作。如果您在travis文件中指定node_js作为您的语言,travis将自动运行它。


npm install

接着

npm test

第一个命令将安装 package.json 文件中指定的所有 devDependencies,第二个命令将运行 package.json 中名为"test"的脚本。以下是我在顶层存储库中需要具有的三个文件,以便 travis 运行单个 QUnit 测试套件。

.travis.yml

language: node_js
node_js:
  - "0.10"

gulpfile.js

var gulp = require('gulp'),
    qunit = require('gulp-qunit');

gulp.task('default', function() {
    return gulp.src('./tests/unit/unittests_nupic-js.html')
        .pipe(qunit());
});

package.json

{
  "name": "nupic-js",
  "version": "0.0.1",
  "description": "JavaScript port of NuPIC",
  "license": "GPL-3.0",
  "repository": "iandanforth/nupic-js",
  "bugs": { "url" : "http://github.com/iandanforth/nupic-js/issues"
  },
  "author": {
    "name": "Ian Danforth",
    "email": "iandanforth@gmail.com"
  },
  "engines": {
    "node": ">=0.10.0"
  },
  "scripts": {
    "test": "gulp"
  },
  "keywords": [
    "numenta",
    "nupic",
    "machine learning"
  ],
  "devDependencies": {
    "gulp-qunit": "~0.2.1",
    "gulp-util": "~2.2.14",
    "gulp": "~3.5.1"
  }
}

Chap - 这正是我需要的。非常感谢! - John Reilly

3

在 Odi 的回答中,使用 npm 来解决依赖问题:

.travis.yml

language: node_js
node_js:
  - "6"

.Gruntfile.js

module.exports = function(grunt) {
  // Project configuration.
  grunt.initConfig({
    qunit: {
      files: ['./test/qunit.html']
    }
  });

  // Load plugin
  grunt.loadNpmTasks('grunt-contrib-qunit');

  // Task to run tests
  grunt.registerTask('test', 'qunit');
};

Package.json(相关部分)

  "devDependencies": {
    "grunt": "^1.0.1",
    "grunt-contrib-qunit": "^1.3.0"
  },
  "scripts": {
    "test": "grunt test"
  }

您可以通过运行 npm install 然后 npm test 在本地尝试配置。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接