3

我正在使用 Cucumber 和 Capybara。我突然注意到,在捆绑安装之后,我现在正在测试失败,其中换行符作为文本的一部分出现在字符串中。

示例错误:

RSpec::Expectations::ExpectationNotMetError: expected to find text "Longview Road Clase Swansea SA6 7JL" in "Skip to main content\nGOV.UK\nDigital tachograph card\n......."

过去,那些换行符不存在。我正在努力追查是哪个宝石导致了这种情况。

有没有办法阻止这种情况,而无需对我从网页中提取的每一个文本字符串进行剥离?

一些宝石版本:

Capybara - 2.18 Rspec-expectations - 3.7.0 Cucumber - 2.4.0

4

1 回答 1

10

你确定你在 Capybara 2.18 上吗?这是在 Capybara 3 中改变的行为,现在预计驱动程序返回的文本更接近向用户显示的内容 - https://github.com/teamcapybara/capybara/blob/master/UPGRADING.md#node。如果您真的没有使用 Capybara 3.x,那么您可能更新了您使用 Capybara 的任何驱动程序,它不再支持 Capybara 2.x 行为。

如果您现在使用 Capybara 3.x,那么您需要更改测试以检查实际显示的内容(这是对页面上内容的更正确检查),或者您可以使用 Capybara 3.5+ 版本,它添加了一个normalize_ws文本/内容匹配器的选项,以便您可以编写

expect(element).to have_text('Longview Road Clase Swansea SA6 7JL', normalize_ws: true)

复制更多类似 2.x 的行为

于 2018-08-01T16:24:19.193 回答