Перейти к основному содержимому

respondOnce

Обзор

Используйте команду respondOnce, чтобы ответить один раз заданной перезаписью.

Вы можете вызвать respondOnce несколько раз подряд, тогда при запросах ответы будут использоваться в том же порядке, как были вызваны команды respondOnce.

Если вы используете только respondOnce и обратитесь к ресурсу большее количество раз, чем вызывали respondOnce, то после исчерпания поддельных данных, запрос начнет возвращать оригинальный ответ от ресурса.

Использование

mock.respondOnce(overwrites, { header, statusCode, fetchResponse });

Параметры команды

ИмяТипОписание
overwritesMockOverwritePayload для перезаписи ответа.
headerObjectПерезаписать определенные заголовки.
statusCodeNumberПерезаписать код состояния ответа.
fetchResponseBooleanПолучить реальный ответ, прежде чем отвечать с помощью поддельных данных.

Примеры использования

async function getToDos(browser) {
await browser.$("#todo-list li").waitForExist();

const todoElements = await browser.$$("#todo-list li");

return Promise.all(todoElements.map(el => el.getText()));
}

it("should demonstrate the respondOnce command", async ({ browser }) => {
const mock = await browser.mock("https://todo-backend-express-knex.herokuapp.com/", {
method: "get",
});

mock.respondOnce([
{
title: "3",
},
{
title: "2",
},
{
title: "1",
},
]);

mock.respondOnce([
{
title: "2",
},
{
title: "1",
},
]);

mock.respondOnce([
{
title: "1",
},
]);

await browser.url(
"https://todobackend.com/client/index.html?https://todo-backend-express-knex.herokuapp.com/",
);
console.log(await getToDos(browser)); // выведет: [ '3', '2', '1' ]

await browser.url(
"https://todobackend.com/client/index.html?https://todo-backend-express-knex.herokuapp.com/",
);
console.log(await getToDos(browser)); // выведет: [ '2', '1' ]

await browser.url(
"https://todobackend.com/client/index.html?https://todo-backend-express-knex.herokuapp.com/",
);
console.log(await getToDos(browser)); // выведет: [ '1' ]

await browser.url(
"https://todobackend.com/client/index.html?https://todo-backend-express-knex.herokuapp.com/",
);
console.log(await getToDos(browser)); // выведет: настоящий ответ ресурса
});