انتقل إلى المحتوى الرئيسي

خدمة 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