Я пишу генератор pdf, используя https://github.com/foliojs/pdfkit внутри маршрута сервера hapi, я успешно реализовал его, но мне трудно написать для него модульные тесты.
Я погуглил это, но пока не нашел ответа, а в документации пакета ничего не упоминается о тестировании.
Кто-нибудь написал модульный тест для своей библиотеки?
Спасибо за вашу помощь y'all!
Edit: основное внимание в тесте уделяется тому, как работает 'do c', экземпляр pdfkit, вот функция, которую я хочу протестировать, функции, которые не добавлены, являются просто разделением повторяющегося кода pdf
const generatePdf = async (request, h) => {
return new Promise(async (resolve, reject) => {
try {
const doc = initPdf();
const {curated, address, photo} = await dataHandler(request, h);
// Title page
doc.font('Lato-Semibold')
.fontSize(16)
.text(
`${address.address1}, ${address.city} ${address.stateProvince} ${address.postalCode}`,
{align: 'center'}
);
doc.fontSize(14).text(' ');
if (photo.base64Photo) {
handleImage(doc, photo.base64Photo);
}
// Others page(s)
doc.addPage();
renderSections(doc, curated.others);
// Amenities page(s)
doc.addPage();
doc.font('Lato-Semibold')
.fontSize(26)
.text(
await getTranslatedString(
locale,
`px-hospitality.amenity.category.AMENITIES`
),
{align: 'center'}
);
// Hack to add a space between text and next header
doc.fontSize(14).text(' ');
renderSections(doc, curated.amenities);
generatePageNumbers(doc);
// write to PDF
const chunks = []; // contains the base64 string
doc.on('data', (chunk) => {
chunks.push(chunk);
});
doc.on('end', () => {
// the stream is at its end, so push the resulting base64 string to the response
const result = Buffer.concat(chunks);
resolve({code: 200, result});
});
doc.on('error', (err) => {
reject({code: 500, error});
});
doc.end(); // will trigger the stream to end
} catch (error) {
reject({code: 500, error});
}
});
};