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

Сервіс 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