[英]Mocking html-pdf using Jest
我在我的 nodejs 代碼中使用html-pdf包(不在 Typescript 中)。 現在,這個包有一個create()
函數,它與toBuffer()
函數鏈接在一起。 我正在使用 Jest 對我的代碼進行單元測試,並想模擬這個調用pdf.create(html).toBuffer()
。
var pdf = require('html-pdf');
pdf.create(html).toBuffer(function(htmlToPdfError, buffer){
if (htmlToPdfError) {
reject(htmlToPdfError);
}
resolve(buffer.toString('base64'));
});
編輯:我試圖在我的規范文件中使用以下代碼來制作模塊:
jest.mock('html-pdf', () => ({
create: jest.fn(() => {
return Promise.resolve();
})
}));
這有助於我模擬create()
函數,但我不知道如何在 Promise.resolve 中返回一個具有toBuffer
函數的對象
這會起作用嗎?
然后斷言您的“pdf”緩沖區包含“測試字符串”?
jest.mock('html-pdf', () => ({
create: jest.fn(() => {
return Promise.resolve({
toBuffer: function(callback) {
callback(null, Buffer.from("test string", "utf-8"));
},
});
})
}));
(我沒試過)
我可以使用以下代碼模擬它:
const mockToBuffer = {
toBuffer: jest.fn((callback: Function) => callback(null, null)),
}
jest.mock('html-pdf', () => ({
create: jest.fn(() => mockToBuffer),
}))
it('Should work', async () => {
const expectedResult = Buffer.from([10])
mockToBuffer.toBuffer.mockImplementation((callback: Function) => {
callback(null, expectedResult)
})
// const result = await yourFuncUsingHtmlPdf(/* fakePayload */)
// Comparing the buffer using the native function
// expect(expectedResult.equals(result)).toBe(true)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.