Service WireMock
wdio-wiremock-service est un package tiers, pour plus d'informations veuillez consulter GitHub | npm
Ce service vous aide à exécuter WireMock de manière transparente lors de l'exécution de tests avec WebdriverIO. Il utilise le célèbre dépôt Maven pour télécharger le fichier jar WireMock pour vous, qui est ensuite automatiquement installé, démarré et arrêté. Restez à jour en rejoignant la communauté sur Gitter pour obtenir de l'aide et du soutien.
Installation
npm i -D wdio-wiremock-service
Les instructions sur la façon d'installer WebdriverIO
peuvent être trouvées ici.
Utilisation
Dans le répertoire racine (par défaut ./mock
), vous trouverez deux sous-répertoires, __files
et mappings
qui sont utilisés pour vos fixtures et mocks.
Pour plus d'informations, consultez la documentation officielle de WireMock.
Configuration
Pour utiliser le service avec le testrunner wdio, vous devez l'ajouter à votre tableau de services :
// wdio.conf.js
export.config = {
// ...
services: ['wiremock'],
// ...
};
Lorsque vous utilisez webdriverio de manière autonome, vous devez ajouter le service et déclencher les hooks onPrepare
et onComplete
manuellement. Un exemple peut être trouvé ici (l'exemple utilise Jest) :
Options
Les options suivantes peuvent être ajoutées au service.
port
Port sur lequel WireMock doit fonctionner.
Type: Number
Par défaut: 8080
Exemple:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { port: 8181 }]],
// ...
};
rootDir
Chemin où WireMock recherchera les fichiers.
Type: String
Par défaut: ./mock
Exemple:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { rootDir: './mock' }]],
// ...
};
version
Version de WireMock à télécharger et à utiliser.
Type: String
Par défaut: 3.3.1
Exemple:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { version: '2.25.1' }]],
// ...
};
skipWiremockInstall
Indique au service de sauter le téléchargement de WireMock.
Type: Boolean
Par défaut: false
Exemple:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { skipWiremockInstall: true }]],
// ...
};
binPath
Chemin personnalisé vers un binaire local Wiremock (souvent utilisé en combinaison avec skipWiremockInstall).
Type: String
Par défaut: './wiremock-standalone-3.0.0.jar' (relatif depuis le service)
Exemple:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { binPath: './my-custom/example-path/wiremock-standalone-3.0.0.jar' }]],
// ...
};
silent
Mode silencieux pour la journalisation de la sortie de WireMock (y compris la journalisation supplémentaire du service lui-même).
Type: Boolean
Par défaut: false
Exemple:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { silent: true }]],
// ...
};
mavenBaseUrl
URL de base de téléchargement pour Maven.
Type: String
Par défaut: https://repo1.maven.org/maven2
Exemple:
// wdio.conf.js
export const config = {
// ...
services: [['wiremock', { mavenBaseUrl: 'https://repo1.maven.org/maven2' }]],
// ...
};
args
Liste où vous pouvez passer tous les arguments pris en charge pour configurer WireMock
Remarque : vous ne pouvez pas passer les options (port
, rootDir
, stdio
, mavenBaseUrl
) ici car elles seront ignorées.
Type: Array
Exemple:
// wdio.conf.js
export const config = {
// ...
services: [
[
'wiremock',
{
args: ['--verbose', '--match-headers'],
},
],
],
// ...
};
Écriture de tests
Écrire votre premier test est vraiment simple :
Utilisation du testrunner 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('http://localhost:8080/api/mytest');
equal(body.text(), 'Hello world!');
});
});
Utilisation de 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!');
});
});
Pour plus d'informations sur WebdriverIO, consultez la page d'accueil.