在Travis CI上测试使用Node.js(Express)构建的REST api
我想在Travis CI上测试我使用Express framework和MongoDb创建的rest api服务。测试在我的机器上本地工作,但在Travis CI上失败。我猜问题出在我的.travis.yml和package.json上 以下是我在本地运行测试的方式: 我怎样才能对travis CI做同样的事情?这是我的应用程序 travis.yml:在Travis CI上测试使用Node.js(Express)构建的REST api,node.js,mongodb,rest,mocha.js,travis-ci,Node.js,Mongodb,Rest,Mocha.js,Travis Ci,我想在Travis CI上测试我使用Express framework和MongoDb创建的rest api服务。测试在我的机器上本地工作,但在Travis CI上失败。我猜问题出在我的.travis.yml和package.json上 以下是我在本地运行测试的方式: 我怎样才能对travis CI做同样的事情?这是我的应用程序 travis.yml: language: node_js node_js: - "0.10" - "0.9" services: mongodb script:
language: node_js
node_js:
- "0.10"
- "0.9"
services: mongodb
script:
- "./node_modules/mocha/bin/mocha *.test.js"
{
"name":"express-restapi",
"author":"Joe Buza",
"description":"Express RestApi",
"version": "0.0.1",
"private": true,
"keywords":["angular", "mocha", "mongodb", "express"],
"license":"BSD",
"dependencies": {
"express":"3.4.4",
"mongoskin":"0.6.0"
},
"devDependencies":{
"mocha":"1.13.0",
"expect.js":"0.2.0",
"superagent":"0.15.7"
},
"scripts":{
"start":"node express.js"
}
}
package.json:
language: node_js
node_js:
- "0.10"
- "0.9"
services: mongodb
script:
- "./node_modules/mocha/bin/mocha *.test.js"
{
"name":"express-restapi",
"author":"Joe Buza",
"description":"Express RestApi",
"version": "0.0.1",
"private": true,
"keywords":["angular", "mocha", "mongodb", "express"],
"license":"BSD",
"dependencies": {
"express":"3.4.4",
"mongoskin":"0.6.0"
},
"devDependencies":{
"mocha":"1.13.0",
"expect.js":"0.2.0",
"superagent":"0.15.7"
},
"scripts":{
"start":"node express.js"
}
}
答案很简单——如果您没有在脚本步骤中指定,Travis将不会为您启动服务器。看看我的(它有点复杂,但嘿,它做测试)
您可以将express.js的require添加到express.test.js中,并从中启动服务器。所有测试完成后,不要忘记将其拆下。TravisCI错误是什么?我假设您在依赖项中需要Mocha,而不仅仅是DevDependence,不是吗?错误是“未捕获错误:应为{code:'ECONNREFUSED',”。有关更多信息,请查看此链接:。它可能与mongodb有关?我也有同样的问题!如果我放置“node express.js”在.travis.yml中,它只会让travis挂在那里。这种方法只在本地机器上工作。你是如何解决这个问题的?你是对的,我必须在我的express.test.js文件中要求('expressjs.js'),比如“expressjs=require('./express.js')。谢谢你,我也遇到了同样的问题!如果我放了“node express.js”在.travis.yml中,它只会使travis挂在那里。这种方法只在本地机器上有效。您是如何解决这个问题的?