我正在使用 Supertest 和 Jest 来测试 Node.js API。
示例测试具有以下格式
it('Read a note for a user', (done) => {
request(graphqlURL)
.post('/graphql')
.set(baseHeaders())
.send({
query: graphQLQuery
})
.end((err, res) => {
expect(res.status).toBe(200);
done();
})
});
当前,当期望失败时,会记录以下内容
expect(received).toBe(expected) // Object.is equality
Expected: 200
Received: 404
我还想记录请求和响应以及失败的测试,以便在调试时获得更多上下文。
有没有办法只打印失败的测试?
最佳答案
expect
的工作方式是在期望失败时抛出 Error
。
Error
的 message
属性是在测试报告中打印的内容。
我想,如果您想使用现有期望,并且只想使用附加数据来扩充失败消息,您可以捕获Error
,将附加数据附加到message
属性,然后再次抛出Error
,如下所示:
it('Read a note for a user', (done) => {
request(graphqlURL)
.post('/graphql')
.set(baseHeaders())
.send({
query: graphQLQuery
})
.end((err, res) => {
try {
expect(res.status).toBe(200);
} catch (err) {
// --- add additional data to the error message here ---
err.message = `${err.message}\n\nfailing query: ${graphQLQuery}`;
throw err; // throw the error so test fails as expected
}
done();
})
});
关于node.js - Jest 测试失败时如何打印请求和响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55095925/