#javascript #mocha.js #cypress #assert
#javascript #mocha.js #cypress #утверждать
Вопрос:
У меня есть этот код
cy.get(element).should('contain.text', search_word || search_word.toLowerCase())
И я получаю эту ошибку
expected <div.games__element__title.card-title.h5> to contain text Hot, but the text was Ultimate hot
Как я могу использовать оператор OR, чтобы я мог утверждать, что текст элемента содержит искомое слово, написанное либо прописными, либо строчными буквами?
Ответ №1:
Для сравнения текста, вместо использования ИЛИ подхода, я предлагаю использовать сравнение в нижнем регистре, имея ожидаемый текст и фактический текст для сравнения в строчной версии. Это более чистый подход.
cy.get(element).invoke('text').should(text => {
expect(text.toLowerCase()).to.contain(search_word.toLowerCase());
})
другой альтернативой является использование регулярных выражений
cy.get(element).invoke('text').should('match', /(h|H)ot/);
Ответ №2:
Один из способов достичь того, что вы ищете, — это использовать условный оператор в cypress. Мы получим внутренний текст из элемента, а затем проверим, присутствует ли в тексте слово hot или Hot, и на основе этого мы будем выполнять действия.
cy.get(element).invoke('text').then((text) => {
if (text.includes('Hot')) {
//Do Something
}
else if (text.includes('hot')) {
//Do Something
}
else {
//Do Something
}
})
Комментарии:
1. Да, это решило бы мою проблему, но не факт, что элемент содержит текст. Цель состоит в том, чтобы утверждать, что элемент содержит текст. Он также может не содержать hot
2. Я понял, что элемент предоставит вам текст
Ultimate hot
, теперь вы хотите проверить, является ли второе слово илиhot
илиHot
или это что-то еще?3. Элемент может дать мне только Ultimate или Ultimate hot или Ultimate Hot . Если элемент не выдает мне слово hot или Hot , тест должен завершиться неудачей.
4. Существует также концепция условного тестирования , упомянутая в документации cypress — аналогично этому ответу: docs.cypress.io/guides/core-concepts/conditional-testing . Разница в том, что в руководстве
.then
за ним следует другое.then
утверждение, реагирующее на результат, найденный первым.then
.