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の詳細については、ホームページをご覧ください。