У меня есть следующий тест для моей собственной команды Cypress :
it('can navigate to a url', () => {
const history = createHistory();
cy.window().then(win => ((win as any).__chh__history__ = history));
cy.spy(history, 'push');
history.listen((location, action) => {
expect(action).to.equal('PUSH');
expect(location.pathname).to.equal(PATH);
expect(location.state).to.equal('foobar');
});
cy.navigate(PATH, 'foobar');
cy.wait(0).then(() => {
expect(history.push).to.have.been.called;
});
});
Команда работает нормально, но если я удаляю cy.wait(0)
, выполняю только expect
, тогда тест не пройден.
Я предполагаю, что это потому, что команда cy.navigate
(добавленная через Cypress.Commands.add
) ставится в очередь, как и другие команды Cypress, то есть expect
фактически выполняется перед любой из команд Cypress даже начали?
Если это так, это нормально и, как и ожидалось, конечно, но есть ли способ в Cypress-тестах ставить вещи в очередь, не используя cy.wait(0)
?
Например, когда я ' м проверяя элементы, я могу использовать cy.get(something).should($el => expect(...))
, но в этом случае нечего "должен включать" ... Я мог бы, конечно, cy.get('body')
или что-то еще, но я действительно не хочу получать что-либо в этом случае. ?