在Jest中,我们可以使用expect.assertions()
方法来确保被监视的函数的catch块中会抛出错误。这个方法用于验证在测试中期望执行的断言数量。
首先,我们需要在测试用例中调用expect.assertions()
方法,并传入期望的断言数量作为参数。这个数量应该等于被监视的函数的catch块中预期抛出错误的次数。
然后,在被监视的函数中,我们可以使用throw
语句来抛出错误。在catch块中,我们可以使用expect.assertions()
方法中指定的数量的断言来验证错误的类型、消息或其他属性。
以下是一个示例:
// 被监视的函数
function fetchData() {
return new Promise((resolve, reject) => {
// 模拟异步操作
setTimeout(() => {
try {
throw new Error('Some error');
} catch (error) {
reject(error);
}
}, 1000);
});
}
// 测试用例
test('测试 fetchData 函数是否能正确抛出错误', () => {
expect.assertions(1); // 期望执行一个断言
return fetchData().catch(error => {
expect(error).toBeInstanceOf(Error); // 验证错误类型
expect(error.message).toBe('Some error'); // 验证错误消息
});
});
在上面的示例中,我们使用expect.assertions(1)
来指定我们期望执行一个断言。然后,在fetchData
函数中,我们使用throw
语句抛出一个错误,并在catch块中使用reject
方法将错误传递给测试用例。
在测试用例中,我们使用.catch()
方法来捕获被监视函数中抛出的错误,并使用expect
断言来验证错误的类型和消息。
这样,我们就可以正确地预期Jest中会从被监视的函数的catch块中抛出错误。
没有搜到相关的沙龙