RequestMock.onRequestTo Method

Specifies which requests should be mocked with a response that follows in the respond method.

requestMock.onRequestTo(filter) → this
Parameters Type Description Default
filter (required) String | RegExp | Object | Predicate | Array Identifies the requests to mock. See Select Requests to be Handled by the Hook. All requests are mocked.
const mock = RequestMock()
    .onRequestTo('https://external-service.com/api/')
    .respond('External service was requested.')
    .onRequestTo(/\/users\//)
    .respond('Users were requested.');

Select Requests to be Handled by the Hook

Filter by URL

Specify the Exact URL

Pass a string with a URL to intercept all requests sent to this exact URL.

const logger = RequestLogger(['https://devexpress.github.io/testcafe/example/', 'http://localhost:8080']);
const mock = RequestMock()
    .onRequestTo('http://external-service.com/api/')
    .respond('Mocked respond');

Use a Regular Expression to Specify the URL

You can also specify a regular expression that matches the desired URLs.

const logger = RequestLogger(/example/);
const mock = RequestMock()
    .onRequestTo(/\/api\/users\//)
    .respond('Mocked respond');

Filter by Parameters

You can filter requests by combining the URL and the request method.

In this instance, you need to use an object that contains the following fields:

Property Type Description
url String A URL to which a request is sent.
method String The request method.
isAjax Boolean Specifies whether this is an AJAX request.
const logger = RequestLogger({ url: 'https://devexpress.github.io/testcafe/example/', method: 'GET', isAjax: false });
const mock = RequestMock()
    .onRequestTo({ url: 'http://external-service.com/api/users/', method: 'POST', isAjax: true })
    .respond((req, res) => {
        res.headers['access-control-allow-origin'] = '*';
        res.setBody(JSON.stringify('users'));
    });

Filter with a Predicate

You can get more request parameters and determine whether to handle the request with the predicate functions.

const logger = RequestLogger(async request => {
    return request.method === 'post' &&
           request.headers['content-type'] === 'text/plain;charset=UTF-8';
});
const mock = RequestMock()
    .onRequestTo(async request => {
        return request.url === 'http://external-service.com/api/users/' &&
               request.method === 'post' &&
               request.isAjax &&
               request.body.toString() === 'foo=bar';
    })
    .respond((req, res) => {
        res.headers['access-control-allow-origin'] = '*';
        res.setBody(JSON.stringify('users'));
    });

This predicate takes the request parameter that provides the following properties:

Property Type Description
userAgent String Identifies the user agent that originated the request. Contains the formatted name and version of the browser and operating system (Firefox 69.0 / Windows 10.0.0, Chrome 77.0.3865.120 / macOS 10.15.1).
url String The URL to which the request is sent.
method String The request method.
isAjax Boolean Specifies whether this is an AJAX request.
headers Object The request headers in the property-value form.
body String A stringified request body.