[英]Mocking a function with optional parameters in Jest and TypeScript
我正在用 TypeScript 編寫 Jest 測試,我想為這樣的函數創建一個強類型模擬:
function download(
options: DownloadOptions,
callback?: (downloadId: number) => void
): void;
請注意,回調是可選的。 如果我使用jest.Mock
來投射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) 類型的參數| 未定義) => 無效'。
參數“回調”和“回調”的類型不兼容。
輸入 '((downloadId: number) => void) | undefined' 不能分配給類型 '(downloadId: number) => void'。
類型 'undefined' 不能分配給類型 '(downloadId: number) => void'。
使用jest.MockedFunction
,從模擬實現函數中刪除類型並可選擇調用回調。
const mockDownload = jest.fn() as jest.MockedFunction<typeof download>
mockDownload.mockImplementation((options, callback) => callback?.(0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.