【发布时间】:2021-03-09 06:21:15
【问题描述】:
我正在使用 apollo-server、jest 和 graphql 我将首先发布我所有的代码:
mockServer.ts
export const startMockServer = async () => {
await server.listen()
}
export const stopMockServer = async () => {
await server.stop()
}
example.test.ts
describe('Testing example', () => {
beforeAll(async () => {
await startMockServer()
})
beforeEach(async () => {
await dbHelper.connect()
})
afterEach(async () => {
await dbHelper.clearDatabase()
})
afterAll(async () => {
await stopMockServer()
await dbHelper.closeDatabase()
})
//it test here
//it test here
company.test.ts
describe('Testing company', () => {
beforeAll(async () => {
await startMockServer()
})
beforeEach(async () => {
await dbHelper.connect()
})
afterEach(async () => {
await dbHelper.clearDatabase()
})
afterAll(async () => {
await stopMockServer()
await dbHelper.closeDatabase()
})
//it test here
//it test here
好的,问题来了:当我运行npm test 时,它运行jest --forceExit。但是,它会抛出 EADDRINUSE: address already in use :::4000。据我了解,afterAll 中的服务器在完成对example.test.ts 的测试后关闭。当它开始测试company.test.ts 时,它使用相同的端口 4000 启动了一个新服务器。但是由于端口 4000 处于 TIME_WAIT(无论是什么)中,所以它会认为该端口正在使用中。
有什么办法可以解决吗?
【问题讨论】:
标签: tcp jestjs graphql apollo-server