Объект запроса макета страницы кукловода - PullRequest
0 голосов
/ 20 февраля 2019
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

1 Ответ

0 голосов
/ 21 февраля 2019

Если вы хотите проверить работоспособность вашей логики в 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);
...