[英]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.