WireMock Service
wdio-wiremock-service är ett tredjepartspaket, för mer information se GitHub | npm
Denna tjänst hjälper dig att köra WireMock sömlöst när du kör tester med WebdriverIO. Den använder det välkända Maven repository för att ladda ner WireMock jar-filen åt dig som sedan automatiskt installeras, startas och stoppas. Håll dig uppdaterad genom att gå med i gemenskapen på Gitter för hjälp och support.
Installation
npm i -D wdio-wiremock-service
Instruktioner om hur man installerar WebdriverIO
finns här.
Användning
I rootkatalogen (standard ./mock
) hittar du två underkataloger, __files
och mappings
som används för dina fixtures och mocks.
För mer information, kolla in WireMock's officiella dokumentation.
Konfiguration
För att använda tjänsten med wdio testrunner behöver du lägga till den i din service-array:
// wdio.conf.js
export.config = {
// ...
services: ['wiremock'],
// ...
};
När du använder webdriverio standalone behöver du lägga till tjänsten och manuellt trigga onPrepare
och onComplete
hooks. Ett exempel finns här (exemplet använder Jest):
Alternativ
Följande alternativ kan läggas till tjänsten.
port
Port där WireMock ska köras.
Typ: Number
Standard: 8080
Exempel:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { port: 8181 }]],
// ...
};
rootDir
Sökväg där WireMock ska leta efter filer.
Typ: String
Standard: ./mock
Exempel:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { rootDir: './mock' }]],
// ...
};
version
Version av WireMock som ska laddas ner och användas.
Typ: String
Standard: 3.3.1
Exempel:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { version: '2.25.1' }]],
// ...
};
skipWiremockInstall
Tala om för tjänsten att hoppa över nedladdningen av WireMock.
Typ: Boolean
Standard: false
Exempel:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { skipWiremockInstall: true }]],
// ...
};
binPath
Anpassad sökväg till en lokal Wiremock-binär (används ofta i kombination med skipWiremockInstall).
Typ: String
Standard: './wiremock-standalone-3.0.0.jar' (relativt från tjänsten)
Exempel:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { binPath: './my-custom/example-path/wiremock-standalone-3.0.0.jar' }]],
// ...
};
silent
Tyst läge för loggning av WireMock's output (inklusive ytterligare loggning från själva tjänsten).
Typ: Boolean
Standard: false
Exempel:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { silent: true }]],
// ...
};
mavenBaseUrl
Bas-URL för nedladdning från Maven.
Typ: String
Standard: https://repo1.maven.org/maven2
Exempel:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { mavenBaseUrl: 'https://repo1.maven.org/maven2' }]],
// ...
};
args
Lista där du kan skicka alla stödda argument för att konfigurera WireMock
Obs: du kan inte skicka alternativen (port
, rootDir
, stdio
, mavenBaseUrl
) här eftersom de kommer att ignoreras.
Typ: Array
Exempel:
// wdio.conf.js
export const config = {
// ...
services: [
[
'wiremock',
{
args: ['--verbose', '--match-headers'],
},
],
],
// ...
};
Skriva tester
Att skriva ditt första test är verkligen enkelt:
Använda WDIO testrunner
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('http://localhost:8080/api/mytest');
equal(body.text(), 'Hello world!');
});
});
Använda WebdriverIO Standalone
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('http://localhost:8080/api/mytest');
equal(body.text(), 'Hello world!');
});
});
För mer information om WebdriverIO se hemsidan.