AceEditor setValue () не вызывает функцию onChange моего приложения React - PullRequest
1 голос
/ 04 апреля 2019

Я использую Cypress.io для тестирования моего приложения React.Я использую Ace Editor в одном из моих компонентов.Я использую функцию onChange, чтобы установить значение переменной в соответствии со значением / данными Ace Editor, таким образом я могу проверить, ввел ли пользователь что-либо в Editor.

Проблема в том, что ясталкиваюсь с тем, что когда я делаю editor.setValue, то он не запускает мою функцию onChange, поэтому он не устанавливает значение переменной, а затем проверка завершается неудачей.

Вот тест, в котором я установилзначение / данные Ace Editor.

it("Enter Template Data", () => {
 window.cy.get('#aceEditor').then((ele) => {
   const editor = ace.edit(ele[0]);
   editor.setValue("Some Text");
 });
});

Я устанавливаю переменную под названием data с данными Ace Editor, которая обычно работает, когда я вручную вводю данные в Ace Editor, но не работает, когда я задаюзначение с использованием «editor.setValue».

Как я могу ввести данные в Ace Editor, используя Cypress, который также запускает мою функцию onChange в моем Компоненте?

1 Ответ

0 голосов
/ 04 апреля 2019

Вы можете использовать cy.trigger() для ручной отправки события DOM на элемент.

Предполагая, что #aceEditor - это элемент, который должен отправлять onChange, вы можетепросто отметьте это в конце:

it("Enter Template Data", () => {
  cy.get('#aceEditor')
  .then((ele) => {
    const editor = ace.edit(ele[0]);
    editor.setValue("Some Text");
  })
 .trigger('change') // `cy.then()` yields the previous subject if nothing is returned,
                    // so we can just chain this on to the end
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...