cal*_*-io 5 javascript asynchronous jestjs
Javascript Jest 测试框架文档说我需要添加done()回调来测试异步函数,否则该函数将在测试完成后返回,因此测试将失败。我将 Jest 添加到我的 package.json 和以下两个文件中:
src.js:
function fetchData(cb) {
setTimeout(cb, 2000, 'peanut butter')
}
module.exports = fetchData
Run Code Online (Sandbox Code Playgroud)
src.test.js:
const fetchData = require('./src')
test('the data is peanut butter', () => {
function callback(data) {
expect(data).toBe('peanut butter')
// no done() method!
}
fetchData(callback);
})
Run Code Online (Sandbox Code Playgroud)
我通过上面的代码通过了测试,但我认为我应该得到一个失败的测试,因为done()我的测试文件中没有。我的fetchData()方法不是异步的吗?
编辑:按照尼古拉斯的回答,我将代码更改为:
src.js:
function fetchData(cb) {
setTimeout(cb, 2000, 'peanut')
}
module.exports = fetchData
Run Code Online (Sandbox Code Playgroud)
src.test.js:
const fetchData = require('./src')
test('the data is peanut butter', () => {
function callback(data) {
expect(data).toBe('peanut butter')
done()
}
fetchData(callback);
})
Run Code Online (Sandbox Code Playgroud)
测试运行者应该根据 Jest 文档评估期望/断言并失败(花生通过,花生酱预期),但仍显示通过测试。
此外,Jest 文档说:
If done() is never called, the test will fail, which is what you want to happen
Run Code Online (Sandbox Code Playgroud)
测试通过和不通过done()回调中的方法,无论有没有peanut butter传递给回调的正确 ( ) 参数(即所有四个变体都通过)。
| 归档时间: |
|
| 查看次数: |
5508 次 |
| 最近记录: |