水豚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')
也许我只是用错了,因为我之前使用的是 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')