【发布时间】:2020-04-13 14:29:58
【问题描述】:
Rails 系统测试使用 Capybara。 Capybara 默认使用rack_test驱动,而系统测试默认使用selenium。
水豚司机:
- rack_test 是一个小型 ruby api,可与 Rack(几乎所有 Ruby web 框架底层的 web 堆栈)一起使用 - 它不知道 javascript
- selenium 管理 libraries enabling web browser automation 的驱动程序 - 它知道 Javascript,因为它实际上使物理网络浏览器自动化。
我想知道为什么选择这些,以及对于编写系统测试的 Rails 程序员来说,什么是明智的选择。
【问题讨论】:
-
Selenium 是浏览器自动化软件,用于通过驱动实际浏览器(无头或无头)来测试应用程序。 rack_test 只是通过使用解析器抓取 HTML 来模拟浏览器。
rack_test因此不能使用 test 来测试 JavaScript 或任何真实的浏览器行为。当然rack_test更快。它只做实际浏览器工作的 1/100。 -
是的,在某些极端情况下,即使您不测试 javascript,实际浏览器和机架测试也会有所不同,因此您的结论有点荒谬。如果权衡是值得的,请使用 rack_test,但不要自欺欺人地认为它们在任何方面都是平等的。
-
我认为标题是错误的。这给人的印象是两人之间的对决。当它真的是“我可以仍然在系统测试中使用 rack_test” 最初的结论给出了一个冷淡的“如果你的系统测试没有使用 Javascript,你可以考虑使用 rack_test。” - 我希望并没有使人们得出驱动程序相同的结论-但是,我现在强调它们是不同的。希望这能解决您的问题?
标签: ruby-on-rails selenium rack-test