gpt4 book ai didi

javascript - 两个文件使用带有 mocha 的 supertest 导致 EADDRINUSE

转载 作者:行者123 更新时间:2023-11-30 08:49:52 25 4
gpt4 key购买 nike

我正在使用 supertest 对我的服务器配置和路由处理程序进行单元测试。服务器配置测试在 test.server.js 中,路由处理测试在 test.routes.handlers.js 中。

当我使用 mocha . 运行所有测试文件时,我得到了 EADDRINUSE。当我单独运行每个文件时,一切都按预期工作。

这两个文件都定义并需要 super 测试,request = require('supertest'),以及快速服务器文件,app = require('../server.js')。在 server.js 中,服务器是这样启动的:

http.createServer(app).listen(app.get('port'), config.hostName, function () {
console.log('Express server listening on port ' + app.get('port'));
});

我的实现有问题吗?运行测试时如何避免 EADDRINUSE 错误?

最佳答案

mocha 有一个 root Suite :


您还可以选择任何文件并添加“root”级别的 Hook ,例如在 describe()s 之外添加 beforeEach() 然后回调将在任何测试用例之前运行,而不管其所在的文件。这是因为 Mocha 有一个根没有名字的套房。

我们用它来启动一个 Express 服务器一次(我们使用一个环境变量,以便它在与我们的开发服务器不同的端口上运行):

before(function () {
process.env.NODE_ENV = 'test';
require('../../app.js');
});

(我们在这里不需要 done(),因为 require 是同步的。)这是,服务器只启动一次,不管有多少不同的测试文件包含这个根级 before 函数。

尝试在每个文件中运行之前从根级别要求 super 测试。

关于javascript - 两个文件使用带有 mocha 的 supertest 导致 EADDRINUSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18801551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com