Вы можете подготовить заглушку XHR следующим образом:
describe('', () => {
let requests = {}; // for store sent request
beforeEach(() => {
cy.server({ delay: 500 }); // cypress will answer for mocked xhr after 0.5s
cy.route({
url: '<URL>',
method: 'POST',
response: 'fixture:response',
onRequest: ({ request }) => {
Object.assign(requests, { someRequest: request.body }); // it has to be mutated
},
});
});
И затем в тесте:
it('', () => {
cy
.doSomeSteps()
.assertEqual(requests, 'someRequest', { data: 42 })
});
У этого решения есть 2 преимущества: первая задержка 0,5 с делает тест более реалистичным c потому что настоящий бэкэнд не отвечает сразу. Во-вторых, вы можете проверить, будет ли приложение отправлять полезную нагрузку после шага doSomeActions()
.
assertEqual
просто используется, чтобы сделать утверждение более читабельным
Cypress.Commands.add('assertEqual', (obj, key, value) =>
cy
.wrap(obj)
.its(key)
.should('deep.equal', value)
);