在express项目中使用wallaby.js时避免使用EADDRINUSE

我已经在客户端JavaScript使用wallaby.js运气很好,我想尝试让它在我的服务器端JavaScript上工作​​。 但是,wallaby.js喜欢使用大量的并行Web服务器,这导致了testing的问题,因为它一直在抛出EADDRINUSE错误。

我的项目的基本脚手架是用Yeoman angular-fullstack生成器完成的 ,所以我的服务器代码位于/server ,大部分方法都在/server/api

到目前为止,我已经设法使它适应以下configuration:

 module.exports = function () { return { files: [ 'server/**/*.js', { pattern: 'server/**/*.spec.js', ignore: true } ], tests: [ 'server/**/*.spec.js' ], env: { type: 'node', }, debug: true, workers: { initial: 1, regular: 1, recycle: false } }; }; 

在这里,你可以看到,我正在设置袋鼠工人的数量为1,不允许它回收工人。 它通过第一次正常工作,但是在我开始编辑文件后,我偶尔会EADDRINUSE错误。

有没有一种首选的方式使用wallaby.js express,并避免在同一端口上产生多个testing服务器进程,从而消除EADDRINUSE错误?

这个名字有点令人困惑,但是recycle: true会做伎俩。 recycle: false意味着一旦启动节点进程将被永久重用。

我知道并不总是可以使用并行进程(特别是使用数据库testing),但为了使其在Web服务器上运行,您可以在运行testing时指定0作为端口,以便随机select一个端口。

  var server = require('http').createServer(); server.listen(0); 

这样wallaby将能够并行运行你的testing并重用进程。