我对单元测试非常陌生。还要编写模块化的可测试代码。
我正在努力实现一个存根来模仿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;
}
想知道您是否可以帮助/指出正确的方向。此外,对此代码的可测试性的任何评论都将受到赞赏