import { Page } from 'puppeteer/lib/Page';
export class MonitorRequestHelper {
public static monitorRequests(page: Page, on = false) {
if(on) {
page.on('request', req => {
if (['image', 'font', 'stylesheet'].includes(req.resourceType())) {
// Abort requests for images, fonts & stylesheets to increase page load speed.
req.abort();
} else {
req.continue();
}
});
} else {
return true;
}
}
}
我正在尝试模拟和监视该函数,以检查它是否至少被调用过一次。 另外,如果有人向我解释如何模拟和监视事件发射器对象,这将很有帮助。 源代码位于https://github.com/Mukesh23singh/puppeteer-unit-testing
上答案 0 :(得分:1)
如果要测试monitorRequests
中的逻辑是否有效,则需要通过事件发射器接口传递伪造的Page
对象,该对象会产生可以测试的伪造请求。
类似的东西:
import {spy} from 'sinon;
// Arrange
const fakePage = { on(type, cb) { this[type] = cb; } }; // "event emitter"
const fakeRequest = {
abort: sinon.spy(),
resourceType() { return 'image'; }
};
monitorRequests( fakePage, true );
// Act
// trigger fake request
fakePage['request'](fakeRequest);
// Assert
assert(fakeRequest.abort.called);