Я пытаюсь написать e2e-тесты на Cypress и хотел бы динамически иметь возможность создавать объекты и использовать их в качестве параметров для метода invoke
.
Тестируемый объект - это SPA смагазин редуксов.Для отладки (и, возможно, тестирования e2e) у меня есть объект window.debug
.Объект отладки предоставляет метод и свойства dispatchAction(action: Action)
, которые возвращают классы, например Actions.SetMenu
.
. Поэтому на консоли браузера я могу вызвать что-то подобное для отправки действия: debug.dispatchAction(new debug.Actions.SetMenu({ menu }))
Для Cypress мне нужно что-то вроде следующего:
let setMenuAction;
cy.window()
.its('debug')
.then(debug => {
const SetMenu = debug.Actions.SetMenu;
setMenuAction = new SetMenu({ menu });
console.log(setMenuAction);
return debug;
})
.invoke('dispatchAction', setMenuAction);
Но вышеупомянутое не работает.Есть ли способ добиться того, что я пытаюсь?
Редактировать: Получил работать, была асинхронная проблема:
cy.window()
.its('debug.Actions.SetMenu')
.then(SetMenu => {
cy.window()
.its('debug')
.invoke('dispatchAction', new SetMenu({ menu }));
})