运行 Travis-CI 使用 MochaJS、Supertest w/ Babel、Browserify 和 Gulp

Running Travis-CI using MochaJS, Supertest w/ Babel, Browserify, and Gulp

我在代码学校学习了一些教程和网络广播,主要是关于 Node、ES2015、Angular 和 Express 的。我已经开始了我自己的一个小项目,并且我已经实现了以上所有内容。我还尝试使用 Travis-CI 和 Mocha/Supertests 进行自动化构建和测试,以进行测试驱动开发。但问题是如果我 运行 npm test 我从 Mocha

得到这个错误
1)  Uncaught error outside test suite:
     Uncaught Error: listen EADDRINUSE :::3000
      at Object.exports._errnoException (util.js:870:11)
      at exports._exceptionWithHostPort (util.js:893:20)
      at Server._listen2 (net.js:1236:14)
      at listen (net.js:1272:10)
      at Server.listen (net.js:1368:5)
      at EventEmitter.listen (node_modules/express/lib/application.js:617:24)
      at Object.<anonymous> (server/app.js:34:5)
      at require (internal/module.js:12:17)
      at Object.<anonymous> (test.js:6:11)
      at require (internal/module.js:12:17)
      at Array.forEach (native)
      at node.js:962:3

我刚刚注意到我在主 app.js 末尾缺少 module.exports = app 这可能有所帮助,但测试仍然失败。

这是 link GitHub 上的最新推送。
这是 Travis-CI.

上的失败构建

您当前在 Travis CI 上遇到的错误是因为 NPM 正在尝试使用 node server/app.js(如 line 9 of your package.json), but your app requires MongoDB to be running (as specified on line 13 of your app.js 中指定)启动您的应用程序。

NPM 必须先启动您的应用,然后才能 运行 测试。

MongoDB 可作为 Travis CI 上的一项服务使用。看看 Travis CI Database Setup docs 看看你过得怎么样。

好吧,错误是这个 Express 应用程序正在尝试使用您机器上的网络端口,该端口已被其他东西使用(可能是另一个 Node / Express 应用程序,因为它们经常使用 3000)。

尝试将 server/app.js 底部附近的 var port 声明更改为 3000 以外的值。

如果使用

,则更改我的 server/app.js 以收听
if (!module.parent) {
    app.listen(port, () => {
        console.log("Listening on port " + port);
    });
}

解决了我在本地机器上无法进行测试的问题。可以找到这样做背后的原因 here.
同时添加

services:
    - mongodb

像@ocean说的有效,可以参考其中的推理here