Documentation
REFERENCE
RequestMock.onRequestTo().respond Method
Specifies the mock response.
requestMock.onRequestTo().respond([body] [, statusCode] [, headers]) → this
| Parameter | Type | Description | Default |
|---|---|---|---|
body (optional) |
Object | String | Function | Buffer | A mocked response body. Pass an object for a JSON response, a string for an HTML response or a function to build a custom response. | An empty HTML page is returned with the response. |
statusCode (optional) |
Number | The response status code. | 200 |
headers (optional) |
Object | Custom headers added to the response in the property-value form. | The content-type header. If the header is not provided, it is set depending on the body parameter's type. If body is an object, the content-type header is set to application/json. If body has another type, the content-type header is set to text/html; charset=utf-8. |
var mock = RequestMock()
.onRequestTo(/*...*/)
.respond({ data: 123 }) // a JSON response
.onRequestTo(/*...*/)
.respond('<html></html>') // an HTML response
.onRequestTo(/*...*/)
.respond(null, 204) // an empty response with a status code
.onRequestTo(/*...*/)
.respond('<html_markup>', 200, { // a response with custom headers
'server': 'nginx/1.10.3'
})
.onRequestTo(/*...*/)
.respond(Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72])) // a response with binary data
.onRequestTo(/*...*/)
.respond((req, res) => { // a custom response
res.headers['x-calculated-header'] = 'calculated-value';
res.statusCode = '200';
const parsedUrl = url.parse(req.path, true);
res.setBody('calculated body' + parsedUrl.query['param']);
});
A Custom Response Function #
var mock = RequestMock()
.onRequestTo(/*...*/)
.respond((req, res) => {
// ...
});
A custom response function takes two parameters.
| Parameter | Type | Description |
|---|---|---|
req |
RequestOptions | A request to be mocked. |
res |
Object | A mocked response. |
Use information provided by the req parameter about the request to configure the response using the res parameter.
The res exposes the following members:
| Property | Type | Description |
|---|---|---|
headers |
Object | The response headers. |
statusCode |
Number | The response status code. |
| Method | Description |
|---|---|
setBody(value) |
Sets the response body. Accepts a string as a parameter. |
The response function can be synchronous or asynchronous:
var mock = RequestMock()
.onRequestTo(/*...*/)
.respond((req, res) => {
res.setBody('<html><body><h1>This is a page</h1></body></html>');
})
.onRequestTo(/*...*/)
.respond(async (req, res) => {
const body = await fetch('https://web-site.com/route/data');
res.setBody(body);
});
RequestOptions #
The RequestOptions object contains the request parameters.
| Property | Type | Description |
|---|---|---|
headers |
Object | The request headers in the property-value form. |
body |
Buffer | The request body. |
url |
String | The URL of the resource. |
protocol |
String | The request protocol. Default: http:. |
hostname |
String | The domain name or IP address of the destination server. Default: localhost. |
host |
String | The domain name or IP address of the destination server, including the listening port. Default: localhost:80. |
port |
Number | The port of the remote server. Default: 80. |
path |
String | The request path. Should include query string if any. For example, '/index.html?page=12'. An exception is thrown when the request path contains illegal characters (e.g., spaces). Default: '/'. |
method |
String | The HTTP request method. Default: 'GET'. |
credentials |
Object | Credentials that were used for authentication in the current session with NTLM or Basic authentication. For HTTP Basic authentication, these are username and password. NTLM authentication additionally specifies workstation and domain. See HTTP Authentication. |
proxy |
Object | If a proxy is used, the property contains information about its host, hostname, port, proxyAuth, authHeader and bypassRules. |
isAjax |
Boolean | Specifies whether the request is an AJAX request (xhr or fetch). |