对水豚的困惑 "Matchers"
Confusion on Capybara "Matchers"
所以当 "asserting" 文本时,我通常会看到大约 3-4 个不同的例子。
水豚文档甚至提到不止 1 个
assert_text('foo')
page.has_text?('bar')
page.should have_content('baz')
(显然 have_content 与 have_text 相同)
expect(page).to have_content('boop')
所以...这就是检查同一事物的 4 种不同方法。我知道 expect
是一个 rspec 匹配器...但是其余的呢?我应该使用什么?不幸的是,水豚文档没有深入探讨它们之间的区别。
谢谢!
assert_text('foo')
是通常用于 minitest 的断言。
page.has_text?('bar')
只是returns真假的一种方法。如果您想根据页面上文本的存在或不存在来更改行为,则可以使用它。在测试应用程序时不经常使用,因为您应该知道页面上会出现什么,而不需要根据内容执行不同的行为。不过如果 automating/scraping 会很有用。
page.should have_content('baz')
(显然 have_content 与 have_text 相同) - 如您所说 - have_text 是 have_content 的别名,因此您可以使用您喜欢的任何一个。 have_content
是一个 RSpec 匹配器,仅在使用 RSpec 时使用。 should
是旧的 RSpec 语法,需要将 should
方法修补到每个对象上,此后已被 expect
取代
expect(page).to have_content('boop') - 当前 RSpec 语法
因此,如果您使用的是 minitest 测试框架,请使用 assert_xxx
样式方法,如果使用 RSpec,您可以使用 expect
样式或 should
风格,尽管对于任何新事物,您可能希望使用 expect
风格。
所以当 "asserting" 文本时,我通常会看到大约 3-4 个不同的例子。
水豚文档甚至提到不止 1 个
assert_text('foo')
page.has_text?('bar')
page.should have_content('baz')
(显然 have_content 与 have_text 相同)
expect(page).to have_content('boop')
所以...这就是检查同一事物的 4 种不同方法。我知道 expect
是一个 rspec 匹配器...但是其余的呢?我应该使用什么?不幸的是,水豚文档没有深入探讨它们之间的区别。
谢谢!
assert_text('foo')
是通常用于 minitest 的断言。
page.has_text?('bar')
只是returns真假的一种方法。如果您想根据页面上文本的存在或不存在来更改行为,则可以使用它。在测试应用程序时不经常使用,因为您应该知道页面上会出现什么,而不需要根据内容执行不同的行为。不过如果 automating/scraping 会很有用。
page.should have_content('baz')
(显然 have_content 与 have_text 相同) - 如您所说 - have_text 是 have_content 的别名,因此您可以使用您喜欢的任何一个。 have_content
是一个 RSpec 匹配器,仅在使用 RSpec 时使用。 should
是旧的 RSpec 语法,需要将 should
方法修补到每个对象上,此后已被 expect
expect(page).to have_content('boop') - 当前 RSpec 语法
因此,如果您使用的是 minitest 测试框架,请使用 assert_xxx
样式方法,如果使用 RSpec,您可以使用 expect
样式或 should
风格,尽管对于任何新事物,您可能希望使用 expect
风格。