对Capybara“Matchers”的困惑

时间:2017-07-12 17:45:14

标签: rspec capybara

因此,例如,当“断言”文本时,我通常会看到3-4个不同的例子。

水豚文档甚至提到超过1个

assert_text('foo')

page.has_text?('bar')

page.should have_content('baz')(显然has_content与have_text相同)

expect(page).to have_content('boop')

所以......这有4种不同的检查方式。我知道expect是一个rspec匹配器......但其余的呢?我应该使用什么?不幸的是,Capybara文档没有区分它们。

谢谢!

1 个答案:

答案 0 :(得分:1)

assert_text('foo')是一个通常与minitest一起使用的断言。

page.has_text?('bar')只是一个返回true或false的方法。如果您想根据页面上是否存在文本来更改行为,则可以使用此方法。在测试应用程序时不经常使用,因为您应该知道页面上会发生什么,而不需要根据内容执行不同的行为。如果自动化/抓取,可能很有用。

page.should have_content('baz')(显然has_content与has_text相同) - 正如你所说 - have_text是have_content的别名,所以你可以使用你喜欢的任何一个。 have_content是RSpec匹配器,仅在使用RSpec时使用。 should是旧的RSpec语法,需要将should方法修补到每个对象上,并且已被expect取代

期待(页面).to have_content(' boop') - 当前的RSpec语法

因此,如果你使用minitest测试框架使用assert_xxx样式方法,如果使用RSpec,你可以使用expect样式或should样式,但是您可能希望使用expect样式的任何新内容。