Можете ли вы вызвать метод в Cypress, используя динамически создаваемые объекты? - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь написать 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 }));
  })

1 Ответ

0 голосов
/ 24 сентября 2019
cy.window()
  .its('debug.Actions.SetMenu')
  .then(SetMenu => {
    cy.window()
      .its('debug')
      .invoke('dispatchAction', new SetMenu({ menu }));
  })
...