跳至主要内容

WireMock 服务

wdio-wiremock-service 是一个第三方包,更多信息请参见GitHub | npm

downloads

此服务可帮助您在使用WebdriverIO运行测试时无缝运行WireMock。它使用众所周知的Maven 存储库为您下载 WireMock jar,然后自动安装、启动和停止。加入Gitter社区以获取帮助和支持,并随时了解最新信息。

安装

npm i -D wdio-wiremock-service

有关如何安装WebdriverIO 的说明,请参见此处

用法

在根目录(默认 ./mock)中,您会找到两个子目录,__filesmappings,它们用于您的夹具和模拟。

有关更多信息,请查看WireMock 的官方文档

配置

为了使用 wdio 测试运行器中的服务,您需要将其添加到服务数组中

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

当使用 webdriverio 独立版本时,您需要手动添加服务并触发onPrepareonComplete 钩子。示例可以在此处找到(此示例使用了Jest

选项

以下选项可以添加到服务中。

端口

WireMock 应在其上运行的端口。

类型:数字

默认值:8080

示例

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

rootDir

WireMock 将在其中查找文件的路径。

类型:字符串

默认值:./mock

示例

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

版本

要下载和使用的 WireMock 版本。

类型:字符串

默认值:3.3.1

示例

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

skipWiremockInstall

指示服务跳过下载 WireMock。

类型:布尔值

默认值:false

示例

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

binPath

指向本地 Wiremock 二进制文件的自定义路径(通常与 skipWiremockInstall 结合使用)。

类型:字符串

默认值:'./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 输出的静默模式(包括服务本身的其他日志记录)。

类型:布尔值

默认值:false

示例

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

mavenBaseUrl

Maven 的基本下载 URL。

类型:字符串

默认值:https://repo1.maven.org/maven2

示例

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

args

您可以在此列表中传递所有支持的参数以配置 WireMock

注意:您不能在此处传递选项(portrootDirstdiomavenBaseUrl),因为它们将被忽略。

类型:数组

示例

// 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('https://127.0.0.1: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('https://127.0.0.1:8080/api/mytest');
equal(body.text(), 'Hello world!');
});
});

有关 WebdriverIO 的更多信息,请参见主页

欢迎!我怎样才能帮到您?

WebdriverIO AI Copilot