【发布时间】:2020-06-06 01:14:43
【问题描述】:
我正在用 TypeScript 编写我的 Jest 测试,我想为这样的函数创建一个强类型模拟:
function download(
options: DownloadOptions,
callback?: (downloadId: number) => void
): void;
请注意,回调是可选的。如果我使用jest.Mock 来转换模拟函数...
const mockDownload = jest.fn() as jest.Mock<void, [
DownloadOptions,
((downloadId: number) => void)?
]>
...并尝试像这样使用它:
download.mockImplementation(
(
options: DownloadOptions,
callback: (downloadId: number) => void,
) => callback(0),
)
...我收到 TS 错误 2345:
'(options: DownloadOptions, callback: (downloadId: number) => void) => void' 类型的参数不可分配给 '(options: DownloadOptions, callback?: ((downloadId: number) = > void) | undefined) => void'。
“回调”和“回调”参数类型不兼容。
输入 '((downloadId: number) => void) | undefined' 不可分配给类型 '(downloadId: number) => void'。
类型“未定义”不可分配给类型“(downloadId: number) => void”。
【问题讨论】:
标签: typescript jestjs