Mocha Chai with Nock:为什么在 'after()' 和 'afterEach()' 中进行清理时出现超时错误?
Mocha Chai with Nock: why am I getting timeout errors when doing cleanup in 'after()' and 'afterEach()'?
我正在 mocha/chai 套件中用 Nock 存根(嘲笑?)一个获取请求,它似乎工作正常。但是,当我想在 describe
之后进行清理并将事情恢复正常时,我正在执行 nock 存根,但出现 mocha 超时错误。
我的 nock 设置(我将在每个 it
之前使用不同的 URL,现在我只为一个设置)是
it('should succeed for correct nickname, move and gameID with game in progress', () =>
Promise.resolve()
.then(_ => {
nock('http://localhost:8080')
.post(`/api/user/${nickname}/game/${gameInProgress.id}`)
.reply(200, {
message: 'successful move'
})
return logic.makeAGameMove(nickname, nickname2, {from: "e2", to: "e4", promotion: "q"}, gameInProgress.id, token)
})
.then(res => {
const {message} = res
expect(message).to.equal('successful move')
})
在 describe
的末尾我有
afterEach(_=> nock.cleanAll())
after(_=> nock.restore())
但我不断收到以下错误
"after each" hook for "should succeed for correct nickname, move and gameID with game in progress":
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
"after all" hook:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
我有点不知所措。我什至尝试将对 nock.cleanAll
和 nock.restore
的调用包装在 Promises 中,但没有帮助。我哪里错了?
您正在为箭头函数提供参数。 Mocha 认为您正在使用 done
,您只需要制作它就不会使用任何参数。
(()=>nock.cleanAll())
而不是:
(_=>nock.cleanAll())
因为您正在测试一个异步函数,所以需要告知 chai 正在测试的函数是异步的。这是一种通过在 async
函数之前添加 async
关键字来实现的方法;
it('should succeed for correct nickname, move and gameID with game in progress', async () =>
Promise.resolve()
.then(_ => {
nock('http://localhost:8080')
.post(`/api/user/${nickname}/game/${gameInProgress.id}`)
.reply(200, {
message: 'successful move'
})
return logic.makeAGameMove(nickname, nickname2, {from: "e2", to: "e4", promotion: "q"}, gameInProgress.id, token)
})
.then(res => {
const {message} = res
expect(message).to.equal('successful move')
});
然后在前面添加 async before the fcallback functions
afterEach(async _=> nock.cleanAll())
after(async _=> nock.restore())
我正在 mocha/chai 套件中用 Nock 存根(嘲笑?)一个获取请求,它似乎工作正常。但是,当我想在 describe
之后进行清理并将事情恢复正常时,我正在执行 nock 存根,但出现 mocha 超时错误。
我的 nock 设置(我将在每个 it
之前使用不同的 URL,现在我只为一个设置)是
it('should succeed for correct nickname, move and gameID with game in progress', () =>
Promise.resolve()
.then(_ => {
nock('http://localhost:8080')
.post(`/api/user/${nickname}/game/${gameInProgress.id}`)
.reply(200, {
message: 'successful move'
})
return logic.makeAGameMove(nickname, nickname2, {from: "e2", to: "e4", promotion: "q"}, gameInProgress.id, token)
})
.then(res => {
const {message} = res
expect(message).to.equal('successful move')
})
在 describe
的末尾我有
afterEach(_=> nock.cleanAll())
after(_=> nock.restore())
但我不断收到以下错误
"after each" hook for "should succeed for correct nickname, move and gameID with game in progress":
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
"after all" hook:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
我有点不知所措。我什至尝试将对 nock.cleanAll
和 nock.restore
的调用包装在 Promises 中,但没有帮助。我哪里错了?
您正在为箭头函数提供参数。 Mocha 认为您正在使用 done
,您只需要制作它就不会使用任何参数。
(()=>nock.cleanAll())
而不是:
(_=>nock.cleanAll())
因为您正在测试一个异步函数,所以需要告知 chai 正在测试的函数是异步的。这是一种通过在 async
函数之前添加 async
关键字来实现的方法;
it('should succeed for correct nickname, move and gameID with game in progress', async () =>
Promise.resolve()
.then(_ => {
nock('http://localhost:8080')
.post(`/api/user/${nickname}/game/${gameInProgress.id}`)
.reply(200, {
message: 'successful move'
})
return logic.makeAGameMove(nickname, nickname2, {from: "e2", to: "e4", promotion: "q"}, gameInProgress.id, token)
})
.then(res => {
const {message} = res
expect(message).to.equal('successful move')
});
然后在前面添加 async before the fcallback functions
afterEach(async _=> nock.cleanAll())
after(async _=> nock.restore())