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

clear

Обзор​

Очищает историю mock.calls, но сохраняет перехватчик, правила подмены и обработчики событий. Следующий подходящий ответ снова добавится в историю. Для удаления правил без удаления BiDi-мока используйте reset; для полного удаления — restore.

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

await mock.clear()

Параметры и результат​

Аргументов нет. BiDi синхронно возвращает тот же мок, Classic/CDP не возвращает полезного значения. В примере используется await, что также подходит для асинхронных реализаций. Очистите историю перед waitForResponse, если нужно дождаться нового ответа, а не ранее сохраненного.

Пример​

Пример использует Chrome с WebDriver BiDi. Укажите в baseUrl адрес тестового HTTP-сервера: / отдает HTML-страницу, а /api/items — JSON с полем source: "original" и статусом 200. Явная подписка на события нужна для новых сессий в одном воркере в WDIO 9.6.2.

const assert = require("node:assert/strict");

it("mock.clear: clear history but retain response rules", async ({ browser }) => {
await browser.url("/");
await browser.sessionSubscribe({
events: ["network.beforeRequestSent", "network.responseStarted"],
});
const mock = await browser.mock("/api/items");
try {
mock.respond({ source: "mocked" });
await browser.execute(async () =>
(await fetch("/api/items", { cache: "no-store" })).json(),
);
await mock.waitForResponse({ timeout: 3000 });
assert.equal(mock.calls.length, 1);
await mock.clear();
assert.equal(mock.calls.length, 0);
const body = await browser.execute(async () =>
(await fetch("/api/items", { cache: "no-store" })).json(),
);
assert.equal(body.source, "mocked");
await mock.waitForResponse({ timeout: 3000 });
assert.equal(mock.calls.length, 1);
} finally {
await mock.restore();
}
});

Источники​

Материал учитывает исходную статью WebdriverIO.