تخطى إلى المحتوى الرئيسي

خدمة 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 testrunner، تحتاج إلى إضافتها إلى مصفوفة الخدمات الخاصة بك:

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

عند استخدام webdriverio standalone، تحتاج إلى إضافة الخدمة وتشغيل خطافات 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 testrunner​

import fetch from 'node-fetch'; // يمكنك استخدام أي عميل HTTP تفضله
import { equal } from 'node:assert'; // يمكنك استخدام أي مكتبة تأكيد تفضلها

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

استخدام WebdriverIO Standalone​

import fetch from 'node-fetch'; // يمكنك استخدام أي عميل HTTP تفضله
import { equal } from 'node:assert'; // يمكنك استخدام أي مكتبة تأكيد تفضلها
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(); // إنشاء نسخة من الخدمة
await wiremockLauncher.onPrepare(WDIO_OPTIONS); // تشغيل خطاف onPrepare
client = await remote(WDIO_OPTIONS);
});

afterAll(async () => {
await client.deleteSession();
await wiremockLauncher.onComplete(); // تشغيل خطاف onComplete
});

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