Лучший способ перехватить запрос XHR на странице с кукловодом и вернуть макет ответа

Мне нужно иметь возможность перехватывать запросы XHR на странице, загруженной Кукловод и возврат глумиться ответов для организации тестирования backendless для моего веб-приложения. Как лучше всего это сделать?

3 ответов


хорошо. В новейшем puppeteer, он обеспечивает request.respond() метод для обработки этой ситуации.


кажется, что путь есть request.respond() действительно, но все же, я не мог найти конкретный пример в интернете о том, как его использовать. Вот как я это сделал:--9-->

// Intercept API response and pass mock data for Puppeteer
await page.setRequestInterception(true);
page.on('request', request => {
    if (request.url === constants.API) {
        request.respond({
            content: 'application/json',
            headers: {"Access-Control-Allow-Origin": "*"},
            body: JSON.stringify(constants.biddersMock)
        });
    }
    else {
        request.continue();
    }
});

что именно здесь происходит?

  1. во-первых, все запросы перехватываются с page.setRequestInterception()
  2. затем для каждого запроса я ищу тот, который меня интересует, сопоставляя его по URL-адресу с if (request.url === constants.API) здесь constants.API - это только конечная точка, которую мне нужно сопоставить.
  3. если нашли, Я передаю свой собственный ответ с request.respond(), иначе я просто позволю запросу продолжить с request.continue()

еще два пункта:

  • constants.biddersMock выше-это массив
  • заголовок CORS важен или доступ к вашим фиктивным данным не будет разрешен

пожалуйста, прокомментируйте или обратитесь к ресурсам с лучшим примером (- АМИ).


Если кто-то заинтересован, я закончил создание специального приложения для моих потребностей тестирования, которое добавляет притворщик на странице. И я общаюсь с сервером Pretender, используя Puppeteer's evaluate метод.

это не идеально, но я не мог найти способ достичь того, что мне нужно только с кукольником. Существует способ перехватывать запросы с Puppeteer, но, похоже, нет способа предоставить поддельный ответ для данного запрос.

обновление:

Как X Rene указано теперь есть собственная поддержка для этого в Puppeteer v0.13.0 использование запрос.respond () метод. Я собираюсь переписать свои тесты, чтобы использовать его вместо притворщика, так как это упростит многое для меня.

обновление 2:

здесь pptrбыл-глумиться-сервера доступно сейчас для этого. Внутренне он полагается на запрос перехват и запрос.respond () метод. Библиотека довольно минимальный, и может не соответствовать вашим потребностям, но это хотя бы дает пример, как реализовать тестирование backendless используя Кукольник. Отказ от ответственности: я автор этого.