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

expect для моков сети

toBeRequested

Проверяет, был ли сделан указанный запрос.

Например:

const mock = browser.mock("**/api/todo*");
await expect(mock).toBeRequested();

toBeRequestedTimes

Проверяет, был ли сделан указанный запрос ожидаемое количество раз.

Например:

const mock = browser.mock("**/api/todo*");
await expect(mock).toBeRequestedTimes(2);
// или, что то же самое:
await expect(mock).toBeRequestedTimes({ eq: 2 });
const mock = browser.mock("**/api/todo*");
// проверяем, что запрос был сделан как минимум 5 раз, но не больше 10 раз
await expect(mock).toBeRequestedTimes({ gte: 5, lte: 10 });

toBeRequestedWith

Проверяет, был ли сделан указанный запрос с заданными опциями.

Большинство опций поддерживают частичные матчеры expect.* / jasmine.* такие как expect.objectContaining.

Например:

const mock = browser.mock("**/api/todo*", { method: "POST" });

await expect(mock).toBeRequestedWith({
url: "http://localhost:8080/api/todo", // [optional] string | function | custom matcher
method: "POST", // [optional] string | array
statusCode: 200, // [optional] number | array
requestHeaders: { Authorization: "foo" }, // [optional] object | function | custom matcher
responseHeaders: { Authorization: "bar" }, // [optional] object | function | custom matcher
postData: { title: "foo", description: "bar" }, // [optional] object | function | custom matcher
response: { success: true }, // [optional] object | function | custom matcher
});

await expect(mock).toBeRequestedWith({
url: expect.stringMatching(/.*\/api\/.*/i),
method: ["POST", "PUT"], // или POST, или PUT
statusCode: [401, 403], // или 401, или 403
requestHeaders: headers => headers.Authorization.startsWith("Bearer "),
postData: expect.objectContaining({ released: true, title: expect.stringContaining("foobar") }),
response: r => Array.isArray(r) && r.data.items.length === 20,
});