即使内容存在,Rspec has_content也会抛出错误

时间:2018-02-08 05:02:54

标签: ruby-on-rails ruby rspec cucumber capybara

我正在使用黄瓜和水豚,rspec助手拧干测试案例。

当我使用have_content验证特定页面中是否存在文本时,即使页面中存在内容,也会抛出错误。

我的功能文件是

When I visit "/news"
Then I should not see a page with following content
  | content                                                                          |
  | .*Confirm your email address now.* |

步骤定义文件是

Then /^I should see a page with following content$/ do |table|
  table.hashes.each do |hash|
    page.should have_content(hash[:content])
  end
end

我得到的错误是

  

RSpec :: Expectations :: ExpectationNotMetError:期望找到文本   "。立即确认您的电子邮件地址。"在" The North FaceBanana   RepublicLevi' sadidasTrue ReligionJ。 Ralph的CrewJordanPolo   LaurenKids' BrandsGAPCarter的NikeChildren's PlaceGymboreeOshKosh   B' goshConverseRalph LaurenJusticeOld NavyPeople也   SearchedVictoria's SecretChristian LouboutinGoyardForever   21AsosParties如何工作在PoshmarkNewsAllCommentsOffers想要   卖你的东西?在您的移动设备上下载Poshmark!确认您的   现在是电子邮件地址,以确保您收到重要的订单和帐户   。信息"

我正在寻找的文字也出现在页面中。

如果我在某个地方错了,请帮助我..

提前致谢。

1 个答案:

答案 0 :(得分:0)

我发现了我所犯的错误。

has_content将采用正则表达式,但为此你需要传递一个正则表达式 - page.should have_content(/。 blah。 /)。如果你传递一个字符串,它会对相关的元素内容进行子字符串匹配,除非你传递确切的选项,然后使它做一个完全匹配的元素。应该has_content('blah',exact:true)

更改要素文件

When I visit "/news"
Then I should not see a page with following content
  | content                                                                          |
  | Confirm your email address now|

而不是

When I visit "/news"
Then I should not see a page with following content
  | content                                                                          |
  | .*Confirm your email address now.* |

纠正错误。