【问题标题】:Mock server problem while testing with Jest and apollo-server使用 Jest 和 apollo-server 进行测试时模拟服务器问题
【发布时间】: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


    【解决方案1】:

    我最终使用了apollo-server-testing,所以现在我不必处理这整个考验。

    【讨论】:

      猜你喜欢
      • 2020-09-13
      • 2023-03-09
      • 2023-02-15
      • 2019-09-01
      • 1970-01-01
      • 2017-02-13
      • 2019-09-24
      • 2020-06-04
      • 2013-04-01
      相关资源
      最近更新 更多