DSL for setting up WireMock mappings
npm install wiremock-mapper
import { Configuration } from 'wiremock-mapper';
Configuration.wireMockBaseUrl = 'http://localhost:8080/some_path_prefix'; // default is 'http://localhost:8080'
Global mappings are a way to predefine part o
import { Configuration } from 'wiremock-mapper';
Configration.createGlobalMapping((request, response) => {});
import { Configration } from 'wiremock-mapper';
Configration.reset();
Import the library
import { WireMockMapper } from 'wiremock-mapper';
Mappings are created with WireMockMapper.createMapping()
which takes a function argument defining the mock behavior. It asyncronously sends the configuration to the WireMock server.
await WireMockMapper.createMapping((req, res) => {});
All request modifiers are set from req
provided by createMapping
, and return an instance of RequestBuilder
, MatchBuilder
, or UrlMatchBuilder
. These can be chained together to form a complete request expectation.
It should read like a sentence when set up properly.
await WireMockMapper.createMapping((req, res) => {
req.isAGet.withUrlPath.matching('/my/.*/path');
});
RequestBuilder
Method | Argument(s) | Effect | Returns |
---|---|---|---|
isAGet |
none | sets request method to GET
|
RequestBuilder |
isAPost |
none | sets request method to POST
|
RequestBuilder |
isAPut |
none | sets request method to PUT
|
RequestBuilder |
isADelete |
none | sets request method to DELETE
|
RequestBuilder |
isAHead |
none | sets request method to HEAD
|
RequestBuilder |
isAnOptions |
none | sets request method to OPTIONS
|
RequestBuilder |
isATrace |
none | sets request method to TRACE
|
RequestBuilder |
isAnyVerb |
none | sets request method to ANY
|
RequestBuilder |
withBody |
none | sets request body | RequestBuilder |
withBasicAuth |
username: string, password: string |
sets basic auth | RequestBuilder |
withUrl |
none | sets expected URL | UrlMatchBuilder |
withUrlPath |
none | sets URL path match to urlPathPattern
|
UrlMatchBuilder |
withCookie |
key: string |
sets request cookie | MatchBuilder |
withHeader |
key: string |
sets request header | MatchBuilder |
withQueryParam |
key: string |
sets request query parameter | MatchBuilder |
UrlMatchBuilder
Method | Arguments | Effect | Returns |
---|---|---|---|
equalTo |
url: string |
Matches text given | RequestBuilder |
matching |
regexp: string |
Matches with regular expression | RequestBuilder |
MatchBuilder
Method | Argument(s) | Returns |
---|---|---|
absent |
none | RequestBuilder |
containing |
value: string |
RequestBuilder |
equalTo |
value: string |
RequestBuilder |
equalToJson |
json: any, ignoreArrayOrder: boolean, ignoreExtraElements: boolean |
RequestBuilder |
equalToXml |
xml: string |
RequestBuilder |
macthing |
value: string |
RequestBuilder |
matchingJsonPath |
path: string |
RequestBuilder |
matchingXPath |
xpath: string |
RequestBuilder |
notMatching |
value: string |
RequestBuilder |
Responses are created from res
provided by WireMockMapper.createMapping()
await WireMockMapper.createMapping((req, res) => {
res
.withJsonBody({
someKey: 'theValue',
otherKey: 'otherValue'
})
.withStatus(200)
.withStatusMessage('ok');
});
ResponseBuilder
Method | Argument(s) | Returns |
---|---|---|
withBody |
value: string |
ResponseBuilder |
withDelay |
milliseconds: number |
ResponseBuilder |
withHeader |
key: string |
ResponseBuilder |
withJsonBody |
value: object |
ResponseBuilder |
withStatus |
statusCode: object |
ResponseBuilder |
withStatusMessage |
statusMessage: string |
ResponseBuilder |
withTransformer |
transformerName: string |
ResponseBuilder |
await WireMockMapper.createMapping((req, res) => {
req.isAGet.withUrlPath.equalTo('/my/api/path');
res
.withJsonBody({
someKey: 'theValue',
otherKey: 'otherValue'
})
.withStatus(200)
.withStatusMessage('ok');
});
Get all requests
await WireMockMapper.getRequests();
Get all requests for a given stub id
await WireMockMapper.getRequests({ stubId: 'some_stub_id' });
The interface for the returned object can be found here.