Лучший способ перехватить запрос XHR на странице с кукловодом и вернуть макет ответа
Мне нужно иметь возможность перехватывать запросы XHR на странице, загруженной Кукловод и возврат глумиться ответов для организации тестирования backendless для моего веб-приложения. Как лучше всего это сделать?
3 ответов
кажется, что путь есть 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();
}
});
что именно здесь происходит?
- во-первых, все запросы перехватываются с
page.setRequestInterception()
- затем для каждого запроса я ищу тот, который меня интересует, сопоставляя его по URL-адресу с
if (request.url === constants.API)
здесьconstants.API
- это только конечная точка, которую мне нужно сопоставить. - если нашли, Я передаю свой собственный ответ с
request.respond()
, иначе я просто позволю запросу продолжить сrequest.continue()
еще два пункта:
-
constants.biddersMock
выше-это массив - заголовок CORS важен или доступ к вашим фиктивным данным не будет разрешен
пожалуйста, прокомментируйте или обратитесь к ресурсам с лучшим примером (- АМИ).
Если кто-то заинтересован, я закончил создание специального приложения для моих потребностей тестирования, которое добавляет притворщик на странице. И я общаюсь с сервером Pretender, используя Puppeteer's evaluate
метод.
это не идеально, но я не мог найти способ достичь того, что мне нужно только с кукольником. Существует способ перехватывать запросы с Puppeteer, но, похоже, нет способа предоставить поддельный ответ для данного запрос.
обновление:
Как X Rene указано теперь есть собственная поддержка для этого в Puppeteer v0.13.0 использование запрос.respond () метод. Я собираюсь переписать свои тесты, чтобы использовать его вместо притворщика, так как это упростит многое для меня.
обновление 2:
здесь pptrбыл-глумиться-сервера доступно сейчас для этого. Внутренне он полагается на запрос перехват и запрос.respond () метод. Библиотека довольно минимальный, и может не соответствовать вашим потребностям, но это хотя бы дает пример, как реализовать тестирование backendless используя Кукольник. Отказ от ответственности: я автор этого.