Я знаю, что вы уже ответили на свой вопрос, но, поскольку вы заявили, что вам не нравится разделять свою функциональность на два файла, у меня может быть альтернативное решение.Так как вы все равно экспортируете обе функции, могу ли я предложить вам сделать обе части одного и того же объекта?Это позволит вам легко издеваться или шпионить за функцией модуля.Например, давайте предположим, что у вас есть saver.js
:
class Saver {
saveAs(fileName, content, contentType) {
const a = this.createDownloadLink(fileName, content, contentType)
a.click()
}
createDownloadLink(fileName, content, contentType) {
const a = document.createElement('a')
return a
}
}
const saver = new Saver();
export default saver;
Тогда ваш тест будет выглядеть так:
import saver from './saver'
describe('saveAs', () => {
it("calls click on download link", () => {
const click = jest.fn()
saver.createDownloadLink = jest.fn(() => ({ click }));
saver.saveAs('file.html', '<h1>hello</h1>', 'test/plain;UTF-8')
expect(click).toHaveBeenCalled();
})
})