在 Jest 中,我如何模拟 void 的 Promise?
In Jest, how do I mock a Promise of void?
我正在使用 Jest 和 Typescript。我有一个异步函数 returns 什么都没有(无效)。我如何模拟返回无效?我尝试了以下
const myMockFn = jest.fn().mockImplementationOnce(() => Promise.resolve(void));
jest.mock('../config', () => ({
setup: async () =>
myMockFn(),
}));
但是我得到了编译错误
Expression expected.
与“Promise.resolve(void)”有关。
void
这里用在value
位置是javascript运算符。它是一个一元运算符,即它接受一个参数。因此错误。
void
作为打字稿类型应该用在 type
位置来表示函数 return 值将不会被观察到。
const myMockFn = jest.fn().mockImplementationOnce(() => Promise.resolve());
这足以模拟 Promise<void>
return 类型的函数。
对于更短的语法,您还可以使用 mockResolvedValue
函数:
// For resolved promises
const myMockFn = jest.fn().mockResolvedValueOnce({})
// For rejected promises
const myMockFn = jest.fn().mockRejectedValueOnce(new Error('Your message'))
我正在使用 Jest 和 Typescript。我有一个异步函数 returns 什么都没有(无效)。我如何模拟返回无效?我尝试了以下
const myMockFn = jest.fn().mockImplementationOnce(() => Promise.resolve(void));
jest.mock('../config', () => ({
setup: async () =>
myMockFn(),
}));
但是我得到了编译错误
Expression expected.
与“Promise.resolve(void)”有关。
void
这里用在value
位置是javascript运算符。它是一个一元运算符,即它接受一个参数。因此错误。
void
作为打字稿类型应该用在 type
位置来表示函数 return 值将不会被观察到。
const myMockFn = jest.fn().mockImplementationOnce(() => Promise.resolve());
这足以模拟 Promise<void>
return 类型的函数。
对于更短的语法,您还可以使用 mockResolvedValue
函数:
// For resolved promises
const myMockFn = jest.fn().mockResolvedValueOnce({})
// For rejected promises
const myMockFn = jest.fn().mockRejectedValueOnce(new Error('Your message'))