Cucumber 黄瓜水豚新品系性状研究

Cucumber 黄瓜水豚新品系性状研究,cucumber,capybara,rspec-expectations,Cucumber,Capybara,Rspec Expectations,我在用黄瓜和水豚。我注意到,在一个bundle安装之后,突然间,我得到了失败的测试,其中新行字符作为文本的一部分出现在字符串中 示例错误: RSpec::Expectations::ExpectationNotMetError: expected to find text "Longview Road Clase Swansea SA6 7JL" in "Skip to main content\nGOV.UK\nDigital tachograph card\n......." 在过去,这些

我在用黄瓜和水豚。我注意到,在一个bundle安装之后,突然间,我得到了失败的测试,其中新行字符作为文本的一部分出现在字符串中

示例错误:

RSpec::Expectations::ExpectationNotMetError: expected to find text "Longview Road Clase Swansea SA6 7JL" in "Skip to main content\nGOV.UK\nDigital tachograph card\n......."
在过去,这些新行字符并不存在。我正在努力找出是哪颗宝石导致了这一切

有没有一种方法可以阻止这种情况,而无需对我从网页中提取的每一串文本进行剥离

一些gem版本:

水豚-2.18 Rspec期望值-3.7.0
Cucumber-2.4.0

你确定你使用的是水豚2.18吗?这是一个在Capybara 3中改变的行为,驱动程序现在希望返回的文本更接近于向用户显示的文本-。如果您真的没有使用Capybara 3.x,那么您可能会更新您正在使用的任何驱动程序,并且它不再支持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的行为

全文是什么?因为我在“跳到主要内容\nGOV.UK\n数字行车记录仪卡\n……”中看不到“Longview Road Clase Swansea SA6 7JL”谢谢你,Tom。今天我将尝试3.5,看看我是如何使用它的。有趣的是,你说检查空白“是对页面上的内容进行更正确的检查”。考虑到我们正在检查未呈现空白的HTML元素,我不认为这是“更正确的”。我发现正好相反。。。谢谢你提醒我要正常化_ws@JonathonHorsman是--如果有一些文本希望显示在一行上,则只有在空白未规范化/折叠为单个空格时,才可以检查“some text”与“some\ntext”。当空白被规范化时,“some\n文本”将变为“some text”因此是不可区分的。@JonathonHorsman需要理解的另一件事是,我们不是在谈论HTML文档中的空白——我们是在谈论浏览器中显示的空白——即元素
元素的部分
文本。文本
将返回“部分\ntext”--如果与“规范化”相比,它将被视为“某些文本”。另一个例子是some text-
text
将返回“some text”(在浏览器中显示的“some”和“text”之间有两个空格,使用normalize\u ws,它将被视为一个空格。我在我的
spec\u helper
中设置了
Capybara.default\u normalize\u ws=true
,我现在一切都好了。我理解更新,但我觉得发布时默认设置为
true
会被破坏周围的规格更少。