2013-11-01 46 views
0

我想测试我在Travis CI上使用Express框架和MongoDb创建的其余api服务。测试在本地机器上运行,但在Travis CI上失败。我猜测问题出在我的.travis.yml和package.json上。测试在Travis CI上使用Node.js(Express)构建的REST api

这里是我在本地运行我的测试:

// opens mongodb database on port 27017 
mongod 

// reads the db and returns documents depending on the request 
node express.js 

// test CRUD operations on the app 
mocha express.test.js 

我如何可以做同样的特拉维斯CI?这是我的应用程序https://github.com/mujuni88/Express-RestApi-Tutorial

travis.yml:

language: node_js 
node_js: 
- "0.10" 
- "0.9" 
services: mongodb 
script: 
- "./node_modules/mocha/bin/mocha *.test.js" 

的package.json:

{ 
    "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" 
    } 

} 
+0

什么是TravisCI错误?我认为你需要摩卡在依赖不只是devDependencies,不是? – Azat

+0

错误是“未捕获的错误:预计{code:'ECONNREFUSED',”。有关更多信息,请查看此链接:https://travis-ci.org/mujuni88/Express-RestApi-Tutorial/jobs/13346827。这可能与mongodb有关? – cantfindaname88

+0

我有同样的问题!如果我把“node express.js”放在.travis.yml中,它只会让travis挂在那里。此方法仅适用于本地计算机。你是如何解决这个问题的? –

回答

2

答案很简单 - 特拉维斯不会为你启动服务器,如果不指定本在脚本步骤。看看我的repository(这有点复杂,但嘿,它测试)。

您可以将express.js的require添加到express.test.js中并从那里启动服务器。在所有测试完成之后,不要忘记把它撕下来。

+0

你说得对,我必须在我的express.test.js文件(如“expressjs = require('./ express.js')”)中要求('express.js')。非常感谢你 – cantfindaname88

+0

我有同样的问题!如果我把“node express.js”放在.travis.yml中,它只会让travis挂在那里。此方法仅适用于本地计算机。你是如何解决这个问题的? –

相关问题