Ruby on rails 如何在capybara测试中显示html span标记的文本

Ruby on rails 如何在capybara测试中显示html span标记的文本,ruby-on-rails,capybara,minitest,Ruby On Rails,Capybara,Minitest,我正在RubyonRails capybara上运行以下集成测试 test "displays correct date" do assert page.has_content? @item.begining_date.strftime("%B %d") end 我得到了虚假的期望。要尝试并调试此功能,我希望查看测试期间页面中实际显示的内容,因为我在本地主机上运行网站时获得了正确的日期。我知道显示项目日期的html标记具有名为da

我正在RubyonRails capybara上运行以下集成测试

test "displays correct date" do
        
   assert page.has_content? @item.begining_date.strftime("%B %d")
end
我得到了虚假的期望。要尝试并调试此功能,我希望查看测试期间页面中实际显示的内容,因为我在本地主机上运行网站时获得了正确的日期。我知道显示项目日期的html标记具有名为date1、date2、date3等的id

就像下面的例子一样

<span id="date1">Fri, June 12</span>
6月12日,星期五

我想在我的控制台/终端上显示span标记中id=“date1”、id=“date2”等的内容。因此,当我运行测试时,我知道实际显示的是什么而不是预期的内容。

如果您将rspec断言更改为

assert page.has\u选择器?“#date1',文本:“您希望文本是什么”

然后,测试失败时的错误消息将指示找到了选择器“#date1”,但它包含的不是您期望的文本,而是“其他文本”。通过这种方式,您将知道页面上实际显示的内容。

问题的根本原因是您不应将原始
断言
与Capybara方法一起使用。如果您改为使用Capybara提供的断言,您将得到错误消息,这些消息将为您提供有用的信息,而不是“预期的true变为false”

如果不匹配,将输出页面内容

assert_selector '#date1', text: @item.begining_date.strftime("%B %d")
如果id为“date1”的元素的内容与提供的
text
选项不匹配,则将输出该元素的内容


如果你曾经写过
assert?..
你做错了什么。

不清楚你到底想实现什么?你想把
item2
id
放在html
id
字段中吗?
assert_selector '#date1', text: @item.begining_date.strftime("%B %d")