Если возможно, я рекомендую отказаться от оператора if и выполнить два теста. Это обеспечит вам лучший охват, гарантируя, что оба пути проверены.
context("number of licences", function() {
it('when max licences not assigned, should allow licence entry', () => {
cy.server();
// Stubbed with mock response of same shape as real response
cy.route('api/path/to/licence/count', {
assigned: 4,
total: 5
})
cy.contains('p[class="availablelicenses"]', '4'); // confirms stubbed response used
cy.contains('p[class="totallicenses"]', '5');
cy.get('button[id="cyAdd"]').click()
cy.get('[data-cy=cyFirst').type('testName')
cy.get('[data-cy=cyLast').type('testLast')
cy.get('[data-cy=cyEmail').type('testEmail@mailinator.com')
});
it('when max licences assigned, should not allow licence entry', () => {
cy.server();
// Stubbed with mock response of same shape as real response
cy.route('api/path/to/licence/count', {
assigned: 5,
total: 5
})
cy.contains('p[class="availablelicenses"]', '5'); // confirms stubbed response used
cy.contains('p[class="totallicenses"]', '5');
cy.get('button[id="cyAdd"]').click()
cy.get('p[class="add-user"]').contains('All licenses are already assigned')
});
});
Если вы не можете заглушить API, вы можете использовать что-то похожее на последнее предложение Игоря, но я бы держался подальше отdocument.querySelector('p[class="availablelicenses"]')
, поскольку это будет ненадежно, см. Этот раздел документов Способность к повторным попыткам .
Также используйте should()
вместо .then()
по той же причине.