簡體   English   中英

在 Jest 中運行測試時如何解決 TCPSERVERWRAP?

[英]How to resolve TCPSERVERWRAP while running tests in Jest?

我正在使用 jest 為我的應用程序運行集成測試。 它似乎工作正常,但是當我再次運行它時,我一直收到錯誤。

這是錯誤的縮短版本...

Jest has detected the following 1 open handle potentially keeping Jest from exiting:

● TCPSERVERWRAP

  10 | const port = process.env.PORT || 3000
  11 |
> 12 | module.exports = app.listen(port, () => logger.info(`Listening on port ${port}`))
     |                      ^
  13 |

  at Function.listen (node_modules/express/lib/application.js:618:24)
  at Object.<anonymous> (index.js:12:22)


ReferenceError: You are trying to import a file after the Jest environment is torn down.
    at (Stack trace here)


D:\Ethan\Coding\Node\vidly\node_modules\readable-stream\lib\_stream_readable.js:111
  var isDuplex = stream instanceof Duplex;
                        ^

TypeError: Right-hand side of 'instanceof' is not callable
    at (Stack trace here)

npm ERR! Test failed.  See above for more details

這很奇怪,因為我所有的測試都通過了,但它仍然拋出錯誤。 我的應用中有 2 個集成測試和 1 個單元測試。

這是我的一個集成測試的縮短版本...

const request = require('supertest')

const { User } = require('../../../models/user')

let server

describe('auth', () => {
  let token

  beforeEach(() => {
    server = require('../../../index')
    token = new User().generateAuthToken()
  })
  
  afterEach(() => server.close())


  const exec = () => {
    return request(server).get('/api/users/me').set('x-auth-token', token)
  }

  it('should return 401 if no token is provided', () => {
    token = ''

    exec().then(res => expect(res.status).toBe(401))
  })
})

它似乎指向我從我的主 index.js 文件中導出的服務器。 請問有什么幫助嗎?

要在 ExpressJS 支持下運行 Jest,請遵循本指南

您將快速應用程序 object 傳遞給 Supertest,我假設它自己運行監聽。 這樣它就可以設置端口,進行清理,而您不必自己做任何事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM