docs/helpers/MockServer.md
MockServer
The MockServer Helper in CodeceptJS empowers you to mock any server or service via HTTP or HTTPS, making it an excellent tool for simulating REST endpoints and other HTTP-based APIs.
This helper should be configured in codecept.conf.(js|ts)
Type: object
port number? Mock server porthost string? Mock server hosthttpsOpts object? key & cert values are the paths to .key and .crt filesYou can seamlessly integrate MockServer with other helpers like REST or Playwright. Here's a configuration example inside the codecept.conf.js file:
{
helpers: {
REST: {...},
MockServer: {
// default mock server config
port: 9393,
host: '0.0.0.0',
httpsOpts: {
key: '',
cert: '',
},
},
}
}
Interactions add behavior to the mock server. Use the I.addInteractionToMockServer() method to include interactions. It takes an interaction object as an argument, containing request and response details.
I.addInteractionToMockServer({
request: {
method: 'GET',
path: '/api/hello'
},
response: {
status: 200,
body: {
'say': 'hello to mock server'
}
}
});
When a real request is sent to the mock server, it matches the received request with the interactions. If a match is found, it returns the specified response; otherwise, a 404 status code is returned.
You can send different responses based on query parameters:
I.addInteractionToMockServer({
request: {
method: 'GET',
path: '/api/users',
queryParams: {
id: 1
}
},
response: {
status: 200,
body: 'user 1'
}
});
I.addInteractionToMockServer({
request: {
method: 'GET',
path: '/api/users',
queryParams: {
id: 2
}
},
response: {
status: 200,
body: 'user 2'
}
});
/api/users?id=1 will return 'user 1'./api/users?id=2 will return 'user 2'.When strict is set to false, it performs a loose match on query params and response body:
I.addInteractionToMockServer({
strict: false,
request: {
method: 'POST',
path: '/api/users',
body: {
name: 'john'
}
},
response: {
status: 200
}
});
/api/users with the body containing name as 'john' will return a 200 status code./api/users without the name property in the body will return a 404 status code.Happy testing with MockServer in CodeceptJS! 🚀
passedConfigAn interaction adds behavior to the mock server
I.addInteractionToMockServer({
request: {
method: 'GET',
path: '/api/hello'
},
response: {
status: 200,
body: {
'say': 'hello to mock server'
}
}
});
// with query params
I.addInteractionToMockServer({
request: {
method: 'GET',
path: '/api/hello',
queryParams: {
id: 2
}
},
response: {
status: 200,
body: {
'say': 'hello to mock server'
}
}
});
interaction (CodeceptJS.MockInteraction | object) add behavior to the mock serverReturns any void
Start the mock server
port number? start the mock server with given portReturns any void
Stop the mock server
Returns any void