WireMockサービス
wdio-wiremock-serviceはサードパーティパッケージです。詳細については、GitHub | npm を参照してください。
このサービスは、WebdriverIOでテストを実行する際に、WireMockをシームレスに実行するのに役立ちます。よく知られているMavenリポジトリを使用してWireMockのjarファイルをダウンロードし、自動的にインストール、起動、停止します。ヘルプとサポートについては、Gitterのコミュニティに参加して最新情報を入手してください。
インストール
npm i -D wdio-wiremock-service
WebdriverIOのインストール方法はこちらをご覧ください。
使用方法
ルートディレクトリ(デフォルトは./mock)には、フィクスチャとモックに使用される__filesとmappingsという2つのサブディレクトリがあります。
詳細については、WireMockの公式ドキュメントをご覧ください。
設定
wdioテストランナーでこのサービスを使用するには、サービス配列に追加する必要があります。
// wdio.conf.js
export.config = {
  // ...
  services: ['wiremock'],
  // ...
};
webdriverioスタンドアロンを使用する場合は、サービスを追加し、onPrepareとonCompleteフックを手動でトリガーする必要があります。例はこちらにあります(この例では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' }]],
	// ...
};
サイレント
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' }]],
	// ...
};
引数
WireMockの設定に使用できるすべてのサポートされている引数を渡すことができるリスト。
注: (port、rootDir、stdio、mavenBaseUrl)オプションはここで渡せません。無視されます。
型: 配列
例
// 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://: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://:8080/api/mytest');
		equal(body.text(), 'Hello world!');
	});
});
WebdriverIOの詳細については、ホームページをご覧ください。