Сбой сравнения строк Cypress

#cypress

#cypress

Вопрос:

Строки точно такие же. Почему Cypress считает, что они разные?

 const resultsMessage = `Search results for ${testQuery}`;

cy.get('[data-test=results-header]').then((el) => {
  expect(el.text().trim()).to.contain(resultsMessage);
});
  
 expected 'Search results for featured calc when logged out' 
to include 'Search results for featured calc when logged out'
  

Комментарии:

1. Я думаю, что происходит то, что, поскольку cypress работает асинхронно, тогда ваш cy.get() выполняется первым resultsMessage . Чтобы подтвердить эту печать, оба значения внутри then() используют cy.log(el.text().trim()) и cy.log(resultsMessage) . resultsMessage будет напечатано как неопределенное.

Ответ №1:

Может быть, немного поздний ответ, но сегодня я столкнулся с той же проблемой. Я подозреваю, что HTML-текст, который вы сравниваете, содержит один или несколько amp; nbsp. В этом случае вы можете заменить их следующим образом:

 const resultsMessage = `Search results for ${testQuery}`;

cy.get('[data-test=results-header]').invoke('text').then((text) => {
// replace the space char
expect(text.replace(/u00a0/g, ' ')).equal(resultsMessage)
})
  

смотрите: https://github.com/cypress-io/cypress/issues/9531