У меня есть пользовательская команда кипариса, которая выполняет некоторые асинхронные задачи, и на основе результата команды я хочу выполнить некоторые утверждения.

Но проблема в том, что тесты, которые приходят после вызова команды, либо будут запущены до завершения команды, либо будут иметь неверные значения.

Ниже мой код

Команда

Cypress.Commands.add("testCommand", () => {
    cy.request("http://localhost:3000/testApi").then(({ body }) => {
        cy.request(`http://localhost:3000/testApi${body.query}`).then(() => {
            console.log("success");
        });
    });
});

тест

describe("Summary Page", () => {
    it("my demo test", () => {
        console.log("before command runs");

        cy.testCommand();

        console.log("after command runs");
    });
});

<сильный> фактический результат

before command runs
after command runs
success

Обязательный результат

before command runs
success
after command runs

Как вы можете видеть, вывод after command runs будет запущен до завершения команды

Есть ли способ дождаться завершения команды, прежде чем переходить к тестам?

0
jayesh 26 Янв 2022 в 17:10

2 ответа

Это связано с тем, что команды, отличные от Cypress, выполняются асинхронно, что означает, что они не обязательно будут запускать команды в той последовательности, в которой они написаны. Чтобы решить эту проблему, вы можете использовать then(), что-то вроде:

describe('Summary Page', () => {
  it('my demo test', () => {
    console.log('before command runs')
    cy.testCommand().then(() => {
      console.log('after command runs')
    })
  })
})
0
Alapan Das 26 Янв 2022 в 17:59
Эй, алапан, спасибо за быстрый ответ. У меня есть два сомнения. Во-первых, моя команда не может быть привязана к цепочке, поэтому она не работает над ней. новичок в кипарисе, поэтому не очень об этом знаю .. спасибо
 – 
jayesh
26 Янв 2022 в 17:27
Пожалуйста, добавьте исходный код, чтобы дать правильный ответ. Да, async-await может помочь в этом отношении.
 – 
Alapan Das
26 Янв 2022 в 17:55
Фактический код немного сложен, поэтому я предоставил упрощенный демонстрационный код с почти точным условием, что и реальный код.
 – 
jayesh
26 Янв 2022 в 18:00