#javascript #cypress #sinon
Вопрос:
Для тестов веб-сайта я использую Cypress. У меня есть несколько пользовательских событий, и я использую cy.spy. В первый раз это работает нормально, но если я запускаю функцию во второй раз сразу после первого раза, в ней всегда говорится, что «ожидаемый «тест» был вызван с аргументами «тест», но он никогда не вызывался». Я также попробовал подождать, но это ничего не изменило.
Cypress.Commands.add('waitForEvent', (event, absoluteSelector, expectedURL) => {
cy.window().then((win) => {
const spyFuncName = expectedURL,
spyObj = {},
eventCallback = function(e) {
win.removeEvent(event, win.document, eventCallback);
console.log("WANTED", e.data.url);
spyObj[spyFuncName](e.data.url);
}
spyObj[spyFuncName] = function(eventUrl) {
console.log("WANTED", "Spy: " eventUrl);
}
cy.spy(spyObj, spyFuncName);
win.addEvent(event, win.document, eventCallback);
cy.get(absoluteSelector)
.click()
.then(() => {
expect(spyObj[spyFuncName]).to.be.calledWith(expectedURL);
});
});
})
Версия Cypress: 7.6.0