水豚page.has_text?返回成功但文本错误?

Capybara page.has_text? returning successful with wrong text?

也许我只是用错了,因为我之前使用的是 Rspec 的匹配器 (expect(page).to have_content('foo'))

但是我不确定哪个是真正 "best" 可以使用的,所以如果可能的话,我尽量坚持使用 Capybara 范围界定。

无论如何,我有一段基本代码可以检查登录时的弹出文本: page.has_text?('Signed in successfully.')

够简单了吧?好吧,我可以将文本更改为任何内容,例如: page.has_text?('THIS IS WRONG')

它还能过去吗?是我用错了吗?

如文档所述 #has_text? 只是一个布尔方法,它会 return 真或假。它不是断言,因此除非您检查响应是真还是假,否则它不会导致测试失败。如果您想使用 rspec 检查页面上是否存在文本,您应该使用您之前使用的

expect(page).to have_content('expected text')

have_content 匹配器(别名也为 have_text)是由 Capybara 提供的匹配器,专为您正在做的事情而设计。 如果你不再使用 RSpec 那么你会做

page.assert_text('expected text')