我在 rails3 应用程序中使用 capybara 和 cucumber 。一切正常。但是我不明白测试是如何工作的。
假设我有一个标准的 cucumber 功能测试。我没有使用@selenium 等。这是一个简单的 Vanilla 测试。现在当我跑
bundle exec cucumber
该 Rails 服务器是否在端口上启动?如果是,那么端口号是多少?同样在普通的情况下, capybara 使用机架测试。然而,rack-test 不负责运行服务器。所以我很困惑整个事情是如何运作的。 cucumber 在扮演什么角色。机架测试正在做什么工作以及 capybara 正在做什么。
如果您有文章链接,请与我分享。我真的很想知道事情是如何协同工作的。
最佳答案
虽然我真的不知道这是如何工作的最深层次的细节。但我所做的足以为您提供一些观点。
Cucumber 是一个 ruby 验收测试框架,它允许您用简单的英语编写验收。现在一般来说,它位于 Webrat 或 Capybara 之上,这为其提供了真正的功能,即模拟浏览器或自动浏览器测试。
Capybara 或 Webrat 使运行验收测试变得容易。Capybara 使使用各种驱动程序运行验收测试变得非常简单。驱动程序,即 Selenium、celerity 或机架测试。在普通情况下,rack-test 用于模拟浏览器测试。
Rack-Test 本身只负责创建您在其中运行测试的 session ,步骤定义等已由 capybara 创建。所以基本上没有服务器运行其由机架测试创建的公正 session (准确地说是模拟 session )。 Capybara 现在在由驱动程序(机架测试或其他)创建的 session 之上提供了一个查找器方法和匹配器等,以帮助您创建自己的步骤定义。
Cucumber 在 session 和测试中运行这些步骤,即其中的查找器/匹配器等。
关于ruby-on-rails - cucumber capybara 它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4741316/