在我的项目中,我使用jest
作为测试运行程序。
测试纯函数很容易,
但我发现自己正在与jest
的期望所引发的错误作斗争。
我想使用socket.io
测试异步代码(基于消息)。
test('async', (done) => {
const s = createConnection(config.port)
s.on(WORLD, () => {
expect(true).toBe(true)
done()
})
s.emit(HELLO)
})
运行此测试按预期运行,套接字客户端发送一条消息,
然后收到响应,然后期待done
。
问题是期望值失败时,因为jest
会将其作为错误抛出,
done
永远不会被调用,我需要将其包装在try-catch
块中:
test('async', (done) => {
const s = createConnection(config.port)
s.on(WORLD, () => {
try {
expect(false).toBe(true)
done()
} catch (e) {
done(e)
}
})
s.emit(HELLO)
})
这种编写测试的方式(用try-catch
块包装所有内容)
非常乏味,我想知道是否有一种讲笑话的方法
expect
失败后继续运行。