Jasmine单元测试没有在travis上开始

时间:2014-04-15 07:40:51

标签: javascript continuous-integration jasmine phantomjs travis-ci

我想为我的chrome扩展程序进行持续集成。 使用工具:GitHubTravisBowercomponents-jasmine。 在 .travis.yml

  • 安装 bower
  • bower 下载 jasmine
  • 更改 SpecRunner.html 上的默认 SpecRunner.html ,其中包含我的src和规格
  • phantomjs
  • 中加载我的 SpecRunner.html

.travis.yml

language: node_js
node_js:
  - "0.10"
install:
  - npm install -g bower
  - bower install
  - cd $TRAVIS_BUILD_DIR
script:
  - mv -f ./test/SpecRunner.html ./vendor/components-jasmine
  - phantomjs ./test/runTests.js

runTests.js

var page = require('webpage').create();
page.open('../vendor/components-jasmine/SpecRunner.html', function(){
    phantom.exit();
});

测试应该失败,但是travis的状态 - 传递。 为什么我的测试没有运行?

2 个答案:

答案 0 :(得分:1)

尝试将after_script: echo $?添加到.travis.yml以查看测试的返回值。如果它是0,那么特拉维斯的行为是正确的。

我只是猜测你的测试只是返回0而不管结果如何。根据{{​​3}},这段代码只是尝试打开文件并在失败时调用回调 - 因为没有非-0-exit回调整个脚本正常退出并构建传递。

编辑:

根据你所写的内容,我知道特拉维斯运行得很好,并且它phantomjs ./test/runTests.js没有返回非0值。尝试改变:

function(){
  phantom.exit();
}

成像:

function(status){
  if (status === 'success')
    phantom.exit(0);
  else
    phantom.exit(-1);
}

并说它失败了构建(我假设页面打开总是失败)。

答案 1 :(得分:1)

测试结果显示在相同的 SpecRunner.html

要获得结果,需要打印此加载的页面。 如果 html 在本地加载 phantomjs ,则url应该遵循经典的Url / Uri规则,尤其是对于本地文件(这就是未加载页面的原因):

file:///c:/path/to/the%20file.txt #win
file:///etc/fstab #unix

要获得测试结果,需要在 .travis.yml 中的 after_script 中解析日志并返回值 - 如果测试通过则返回0,如果测试失败,则返回非null。

另外,也许,茉莉花可能有帮助(但我不确定)。