سرویس WireMock
wdio-wiremock-service یک پکیج شخص ثالث است، برای اطلاعات بیشتر لطفاً به GitHub | npm مراجعه کنید
این سرویس به شما کمک میکند تا WireMock را به صورت یکپارچه هنگام اجرای تستها با WebdriverIO راهاندازی کنید. این سرویس از مخزن شناخته شده Maven برای دانلود فایل jar مربوط به WireMock استفاده میکند که سپس به صورت خودکار نصب، شروع و متوقف میشود. برای کمک و پشتیبانی به روز بمانید و به جامعه کاربران در 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 به صفحه اصلی مراجعه کنید.