page.has_content?() 与 expect(page).to have_content
page.has_content?() vs. expect(page).to have_content
大家好,来自 Whosebug 的人们,
我正在接手某人的工作,我的前任使用 Cucumber&Capybara&Selenium 创建了一个测试集。
我很熟悉很多,但我有一个关于他在页面上查找文本的方式的问题。
他的实现:
expect(page).to have_content(text)
我的实现:
page.has_content?(text)
我注意到,第一次实施经常会失败,因为自动化是 'too quick' 网站加载其页面。后者似乎是一个更健壮的实现,也许是因为它的简单性?
谁能告诉我是对还是错,或者这两者是否根本不同。因为我一直在网上搜索但没有真正找到可靠的结论..
提前致谢!
have_content
在预期失败时引发异常,在大多数测试套件中应该比 has_content? 更频繁地使用它。 has_content?
基本上只是 have_content 的包装器,它捕获异常和 returns true 或 false,并与条件
一起使用
if page.has_content?(...)
# click something
else
# click something else
end
您的前任正确使用了 Capybara,因为如果您要测试以确保页面具有特定内容,您应该使用 have_content
。 has_content?
永远不会通过测试(只是默默地 return false 并继续)。如果您的 have_content
断言由于站点太慢而失败,您可能需要增加 Capybara.default_max_wait_time
(或弄清楚为什么页面加载时间这么长)
嗯...我认为还有一件事。
expect(page).to_have_content(text) 是 Rspec 方法,而 page.has_content?(text) 是 Minitest 方法。这仅取决于您在项目中使用的测试类型。我猜。
大家好,来自 Whosebug 的人们,
我正在接手某人的工作,我的前任使用 Cucumber&Capybara&Selenium 创建了一个测试集。 我很熟悉很多,但我有一个关于他在页面上查找文本的方式的问题。
他的实现:
expect(page).to have_content(text)
我的实现:
page.has_content?(text)
我注意到,第一次实施经常会失败,因为自动化是 'too quick' 网站加载其页面。后者似乎是一个更健壮的实现,也许是因为它的简单性?
谁能告诉我是对还是错,或者这两者是否根本不同。因为我一直在网上搜索但没有真正找到可靠的结论..
提前致谢!
have_content
在预期失败时引发异常,在大多数测试套件中应该比 has_content? 更频繁地使用它。 has_content?
基本上只是 have_content 的包装器,它捕获异常和 returns true 或 false,并与条件
if page.has_content?(...)
# click something
else
# click something else
end
您的前任正确使用了 Capybara,因为如果您要测试以确保页面具有特定内容,您应该使用 have_content
。 has_content?
永远不会通过测试(只是默默地 return false 并继续)。如果您的 have_content
断言由于站点太慢而失败,您可能需要增加 Capybara.default_max_wait_time
(或弄清楚为什么页面加载时间这么长)
嗯...我认为还有一件事。 expect(page).to_have_content(text) 是 Rspec 方法,而 page.has_content?(text) 是 Minitest 方法。这仅取决于您在项目中使用的测试类型。我猜。