cypress-api-mock
v5.6.0
Published
Cypress plugin for mocking API
Downloads
48
Keywords
Readme
cypress-api-mock
Cypress plugin with commands for mocking API. It runs its own http server locally and returns registered responses. Http server can be started separately on remote machine if needed.
Adding to project
Add following lines to your commands.ts:
/// <reference types=cypress-api-mock" />
import "cypress-api-mock/commands";
Add following lines to your plugins/index.ts:
import apiMock from "cypress-api-mock/plugin";
function register(on: Cypress.PluginEvents, config: Cypress.ConfigOptions): void {
/* your other registrations */
apiMock(on, config);
}
export = register;
It will start server in the default address http://localhost:3000,
Usage
Prepare environment
It is highly recommended to reset the plugin before every suite to remove all previously registered mocks and logged requests.
beforeEach(() => cy.apiMockReset());
You can also reset the log of requests and responses during the test suite. Requests, responses and mocks are deleted once 5 minutes timeout after the mocks is written expires. If new mock is written, timeout is reset.
cy.apiMockResetCalls();
Mock specific API
cy.apiMock("/test-api", '{"id":${body.id},"message":"Hello ${body.name}!"}');
Assertion
cy.apiMockRequests().should((requests) => expect(requests[testApiUrl][0].data).to.eq(testApiRequestBody));
cy.apiMockResponses().should((requests) => expect(requests[testApiUrl][0]).to.eq(testApiExpectedResponse));
How to Develope
To build plugin run webpack with specific config:
For running server locally when cypress is started
npx webpack --config webpack.config.plugin.ts -w
For running server remotely
npx webpack --config webpack.config.server.ts -w
and then run cypress:
npx cypress open