据我所知,我创建了一个正确的.travis.yml文件,但是当Travis CI运行测试时(它是一个新项目,所以我只有一个)我得到一个错误没有数据库正在运行
connection error: { [MongoError: connect ECONNREFUSED] name: 'MongoError', message: 'connect ECONNREFUSED' }
我添加了一个预测试脚本来启动mongo,现在我可以在不启动mongo的情况下运行我的本地测试并且它通过了,但是使用Travis CI它会收到错误:
ERROR: child process failed, exited with error number 100
我的.travis.yml文件如下所示:
language: node_js
node_js:
"0.10"
services:
- mongodb
以及来自package.json的脚本:
"scripts": {
"pretest": "mongod --fork --logpath /dev/null",
"test": "./node_modules/mocha/bin/mocha test/**/*.js",
"posttest": "mongo admin --eval 'db.shutdownServer()' > /dev/null",
"start": "node server.js"
},
我尝试将链接添加到travis,但我是新的,所以我只能放一个链接,所以我将链接放到我的仓库,所以如果你想要你可以从那里获取这些链接看到完整的travis失败:https://github.com/mrbgit/short-stories/tree/tests-for-story-post
对此的任何帮助都会很棒。我是Stack Overflow的新手,所以如果您需要更多信息,请告诉我。
感谢您的帮助!
答案 0 :(得分:2)
我看了你的回购,看起来你有两个文件:
.travis.yml
且未启动MongoDB的 travis.yml
的人(注意这里没有前导点(即.
)),它使用上面列出的代码启动MongoDB。 Travis CI只会选择名为 .travis.yml
的文件。所以要确保正确的。
我分叉了您的回购并使用fixed .travis.yml
进行了测试,似乎有worked。
希望这有帮助!
答案 1 :(得分:0)
我认为link to official docs可能有用。
好像你不需要像在预测试中那样手动启动mongodb。也许,我实际上并不知道,你的预测试是先运行,然后travis尝试启动mongodb,但它已经运行了,它会遇到错误并停止进程。
我也发现了thread。问题出在mongodb数据目录的所有者身上。它是根本的,但是mongodb是在没有sudo的情况下开始的。如果您自己运行mongodb(就像在预测试中那样),则可以为具有用户可接受权限的目录手动指定--dbpath
。