【问题标题】:How to automate karma unit tests with continuous integration如何通过持续集成自动化业力单元测试
【发布时间】:2015-05-12 05:12:22
【问题描述】:

目前我们运行我们的 karma/jasmine 单元测试一个 gulp 任务:gulp test

我们正试图弄清楚如何让circleci 自动运行我们的测试。我尝试在 circle.yml 文件的test: 部分下添加gulp test,但得到gulp: command not found。但是如果我尝试像pwd 这样的基本操作,我会得到同样的错误。很明显我做错了什么。

我认为使用 package.json 中的 scripts 属性可以实现相同的结果,因为 circleci 会自动运行,但我不知道该怎么做。

这是我们的 circle.yml 文件...

dependencies:
  override:
    - echo PHP rules

test:
  override:
    - gulp test #this doesnt work!

deployment:
  development:
    branch: dev
    heroku:
      appname: ourapp

这里是 package.json...

{
  "name": "ourapp",
  "private": true,
  "description": "An app",
  "main": "index.js",
  "dependencies": {
    "gulp": "~3.8.5"
  },
  "devDependencies": {
    "karma": "~0.12.31",
    "karma-chrome-launcher": "~0.1.7",
    "jasmine-core": "~2.2.0",
    "karma-jasmine": "~0.3.5",
    "karma-firefox-launcher": "~0.1.4",
    "karma-ie-launcher": "~0.1.5",
    "karma-opera-launcher": "~0.1.0",
    "karma-phantomjs-launcher": "~0.1.4",
    "gulp": "~3.8.10",
    "gulp-karma": "0.0.4",
    "karma-coverage": "~0.2.7"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "The A Team"
}

以防万一有用,这里是 gulp 任务...

gulp.task('test', function(){
  return gulp.src(testFiles)
    .pipe(karma({
      configFile: 'karma.conf.js',
      action: 'run' //change to watch if you want to auto-run 
    }))
    .on('error', function(err){
      throw err;
    })
});

为了保持一致性,我认为最好的办法是让 circleci 运行 gulp 任务,但如果我们必须手动运行 karma ... 也没关系。

【问题讨论】:

    标签: node.js unit-testing continuous-integration karma-runner circleci


    【解决方案1】:

    这对我有用:

    dependencies:
      pre:
        - npm install -g gulp
    
    test:
      override:
        - gulp test
    
    machine:
      php:
        version: 5.6.2
    

    npm install -g gulp 对我来说是缺失的部分。 Circleci 将检测 package.json 并自动运行 npm install,但我需要 pre:全局安装它,这样我的 gulp 任务才能工作。

    还值得一提的是,circleci 通过检测退出代码自动知道 karma/jasmine 测试是通过还是失败。所以这只是按原样工作。

    【讨论】:

      【解决方案2】:

      我是 CircleCI 开发人员之一。您需要做的是在 circle.yml 中指定要构建的 NodeJS 版本,以触发 NodeJS 推理规则 - https://circleci.com/docs/language-nodejs

      完成后,我们将自动运行npm installnpm test 等。 要让npm test 做正确的事情,您需要正确配置您的测试脚本。最好先在本地环境中运行。

      您可能还需要添加 gulp-cli 作为开发依赖项,如今大多数 NodeJS 工具将库和 cli 二进制文件拆分为单独的包。

      【讨论】:

      • 嗨,戈登。你昨天通过支持票帮助我解决了这个问题。谢谢你的帮助! +1 我在下面发布了我完成的代码作为其他人的参考。
      • 安装gulp-cli 作为开发依赖项对我不起作用,我需要按照@SDP 的建议运行npm install -g gulp
      猜你喜欢
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2016-06-19
      • 2014-03-15
      相关资源
      最近更新 更多