Я очень новичок в модульном тестировании. Это также относится и к написанию модульного тестируемого кода.
Я пытаюсь реализовать заглушку, чтобы имитировать то, что произошло в page.evaluate (). Объект страницы вводится из внешней функции с помощью библиотеки «puppeteer».
Читал об этом на sinonjs .. Но я не смог обернуть голову вокруг этого.
async function cinemasfromState(page, state) {
const CINEMA_STATE_SELECTOR = `div.top-select div.slider span.state[data-state-selector=$[STATE]]`;
const CINEMA_SELECTOR = `div[data-state=$[STATE]] div.top-select-option a.eccheckbox`;
await page.click(CINEMA_STATE_SELECTOR.replace("$[STATE]", state));
let res = await page.evaluate(
(elementPath, state) => {
return Array.from(document.querySelectorAll(elementPath))
.map(
function(cin, index) {
let result = {
cinemaState: this.state,
cinemaId: cin.getAttribute("data-id"),
cinemaName: cin.getAttribute("data-name"),
cinemaURL: cin.getAttribute("data-url")
};
return result;
},
{ state }
)
.reduce((acc, cur) => Object.assign(acc, { [cur.cinemaId]: cur }), {});//filter dupes
},
CINEMA_SELECTOR.replace("$[STATE]", state),
state
);
return res;
}
Интересно, если бы вы могли помочь / указать в правильном направлении. Также приветствуются любые комментарии по тестируемости этого кода