我使用jest和supertest进行集成测试。在后面的每一节中我关闭了服务器:
let server;
describe('/api/user', () => {
beforeEach(() => {
server = require('../../../app');
});
afterEach(async () => {
await server.close();
});
//some tests
});
但通过运行NPM测试
,我得到以下错误:listen eaddrinuse:address已经在使用:::3200
当我只使用一个something.test.js文件时,一切正常。问题是当我添加一个新的something.test.js时。怎么了?
下面是package.json:
{
"name": "users",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "jest --watchAll"
},
"author": "Saeed Heidarbozorg",
"license": "ISC",
"dependencies": {
"config": "^3.3.4",
"express": "^4.17.1",
"express-async-errors": "^3.1.1",
"joi": "^17.4.0",
"morgan": "^1.10.0",
"pg": "^8.5.1",
"winston": "^3.3.3"
},
"devDependencies": {
"jest": "^26.6.3",
"supertest": "^6.1.3"
}
}
在测试环境中,您根本不想创建http服务器,只需要测试您的express app实例。
如果您想从app.js
发布代码,我可能会给您一个更快的解决方法。
一般而言,这是我构造它的方式,以便于完成TL;DR:
app.js
包含所有express-y内容:
import express from 'express';
const app = express();
// ... do all your express-y stuff
export default app;
index.js
是启动服务器的应用程序的入口点。测试期间不需要此文件:
import http from 'http';
import app from './app';
http.createServer(app).listen(...);
测试时,您根本不需要index.js
,只需从app.js
导入您的express app并对其进行测试即可:
一些测试文件:
import app from './app';
import request from 'supertest';
describe('...',() => {
test('...', async () => {
expect((await request(app).get('/some/route')).status).toBe(200);
});
});
方法正在传递,这太好了,但是为什么的结果会出现在库测试结果中,我不明白。我怎么才能避免呢? 我在这里列出了和的完整代码。
问题内容: 我正在测试一个应用程序(希望可以在heroku上运行,但是在本地也有问题)。它在运行http.Server.listen()时给我一个EACCES错误- 但它仅在某些端口上发生。 因此,我正在本地运行: 我在900端口(或我尝试过的其他20个端口中的任何一个)上没有任何运行,因此这应该可以工作。奇怪的是它 确实 在某些端口 上 工作。例如,端口3000可以正常工作。 是什么原因造成的?
问题内容: 应用程序可以在localhost上正常运行,但是当它连接到服务器时会出错。 我通过端口22连接服务器 这是错误 任何帮助! -更新- 我跑 结果: 但是我跑 什么也没显示。 任何帮助。这是服务器故障吗? 跑步 跑步 问题答案: 您正在使用一个已使用的端口。您必须更改端口,或者必须终止正在监听端口的进程。打开终端并输入(示例):或或和的过程。 如何更改total.js中的侦听 端口 ?
问题内容: 我无法解决一项服务,而另一项正在解决?如果那是错误的意思,那么等待解决问题的方法是什么? java.lang.IllegalArgumentException:侦听器已在android.net.nsd.NsdManager.resolveService(NsdManager.java:613)处使用,位于com.example.miguel.broadcast.LocalService
我创建了一个nodejs服务器(一个loginapp),但当我尝试创建node应用程序时,出现了一个错误(她以前不在这里): 我认为这与mongo有关,但我没有看到错误, 这是我的app.js代码(不完整)问我,如果你需要更多的我的代码 这是我users.js档案 还有用户。js文件 非常感谢能帮助我的人!
问题内容: 我有一个反向代理背后的应用程序,我希望它仅侦听localhost / 127.0.0.1.。 我希望这可以工作: 要么 …但是我得到一个错误: 在不指定主机名的情况下运行应用程序可以正常工作,即。 我正在运行Node v0.6.14 和express @ 2.5.5 ,并阅读了此Google 网上论坛的 讨论, 并在Express application.js中找到此注释,并说:“此方