Перейти до основного вмісту

Сервіс WireMock

wdio-wiremock-service є пакетом сторонніх розробників, для отримання додаткової інформації див. GitHub | npm

downloads

Цей сервіс допомагає вам запускати WireMock без проблем при запуску тестів з WebdriverIO. Він використовує відомий репозиторій Maven для завантаження WireMock jar для вас, який потім автоматично встановлюється, запускається та зупиняється. Будьте в курсі подій, приєднавшись до спільноти в Gitter для допомоги та підтримки.

Встановлення​

npm i -D wdio-wiremock-service

Інструкції щодо встановлення WebdriverIO можна знайти тут.

Використання​

У кореневому каталозі (за замовчуванням ./mock) ви знайдете два підкаталоги, __files та mappings, які використовуються для ваших фікстур та моків.

Для отримання додаткової інформації перегляньте офіційну документацію WireMock.

Конфігурація​

Щоб використовувати сервіс із тестовим раннером wdio, вам потрібно додати його до масиву сервісів:

// wdio.conf.js
export.config = {
// ...
services: ['wiremock'],
// ...
};

При використанні webdriverio в автономному режимі вам потрібно додати сервіс і вручну викликати хуки onPrepare та onComplete. Приклад можна знайти тут (приклад використовує Jest):

Опції​

До сервісу можна додати такі опції.

port​

Порт, на якому повинен працювати WireMock.

Тип: Number

За замовчуванням: 8080

Приклад:

// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { port: 8181 }]],
// ...
};

rootDir​

Шлях, де WireMock шукатиме файли.

Тип: String

За замовчуванням: ./mock

Приклад:

// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { rootDir: './mock' }]],
// ...
};

version​

Версія WireMock, яку потрібно завантажити та використовувати.

Тип: String

За замовчуванням: 3.3.1

Приклад:

// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { version: '2.25.1' }]],
// ...
};

skipWiremockInstall​

Вказує сервісу пропустити завантаження WireMock.

Тип: Boolean

За замовчуванням: false

Приклад:

// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { skipWiremockInstall: true }]],
// ...
};

binPath​

Власний шлях до локального бінарного файлу Wiremock (часто використовується разом з skipWiremockInstall).

Тип: String

За замовчуванням: './wiremock-standalone-3.0.0.jar' (відносно сервісу)

Приклад:

// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { binPath: './my-custom/example-path/wiremock-standalone-3.0.0.jar' }]],
// ...
};

silent​

Тихий режим для логування виводу WireMock (включаючи додаткове логування самого сервісу).

Тип: Boolean

За замовчуванням: false

Приклад:

// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { silent: true }]],
// ...
};

mavenBaseUrl​

Базовий URL для завантаження з Maven.

Тип: String

За замовчуванням: https://repo1.maven.org/maven2

Приклад:

// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { mavenBaseUrl: 'https://repo1.maven.org/maven2' }]],
// ...
};

args​

Список, де ви можете передавати всі підтримувані аргументи для налаштування WireMock

Примітка: ви не можете передавати опції (port, rootDir, stdio, mavenBaseUrl) тут, оскільки вони будуть проігноровані.

Тип: Array

Приклад:

// wdio.conf.js
export const config = {
// ...
services: [
[
'wiremock',
{
args: ['--verbose', '--match-headers'],
},
],
],
// ...
};

Написання тестів​

Написання вашого першого тесту дуже просте:

Використання тестового раннера WDIO​

import fetch from 'node-fetch'; // you can use any HTTP client you like
import { equal } from 'node:assert'; // you can use any assertion library you like

describe('example', () => {
it(`should assert the mock data`, async () => {
const body = await fetch('http://localhost:8080/api/mytest');
equal(body.text(), 'Hello world!');
});
});

Використання WebdriverIO в автономному режимі​

import fetch from 'node-fetch'; // you can use any HTTP client you like
import { equal } from 'node:assert'; // you can use any assertion library you like
import { remote } from 'webdriverio';
import { launcher } from 'wdio-wiremock-service';

const WDIO_OPTIONS = {
capabilities: {
browserName: 'chrome',
},
};

describe('example', () => {
let wiremockLauncher;
let client;

beforeAll(async () => {
wiremockLauncher = new launcher(); // create instance of the service
await wiremockLauncher.onPrepare(WDIO_OPTIONS); // run the onPrepare hook
client = await remote(WDIO_OPTIONS);
});

afterAll(async () => {
await client.deleteSession();
await wiremockLauncher.onComplete(); // run the onComplete hook
});

test('should showoff a mocked api response', async () => {
const body = await fetch('http://localhost:8080/api/mytest');
equal(body.text(), 'Hello world!');
});
});

Для отримання додаткової інформації про WebdriverIO перегляньте домашню сторінку.

Welcome! How can I help?

WebdriverIO AI Copilot