有人可以解释这两个平台之间的差异吗?

都是BDD的一部分,但为什么我应该同时使用一个或另一个?

最佳答案

Capybara 是一种工具,可以像人类一样与网站进行交互(例如访问url,单击链接,将文本键入表单并提交)。它用于模拟用户通过网站的流量。使用Capybara,您可以编写如下内容:

describe "the signup process", :type => :feature do
  before :each do
    User.make(:email => '[email protected]', :password => 'caplin')
  end

  it "signs me in" do
    visit '/sessions/new'
    within("#session") do
      fill_in 'Login', :with => '[email protected]'
      fill_in 'Password', :with => 'password'
    end
    click_link 'Sign in'
    page.should have_content 'Success'
  end
end

cucumber 是一种工具,用于编写映射到代码中的易于理解的测试。使用它,您可以像这样重写上面的示例:
Scenario: Signup process

Given a user exists with email "[email protected]" and password "caplin"
When I try to login with "[email protected]" and "caplin"
Then I should be logged in successfully

几乎纯文本的解释对于非开发人员来说很有用,但也需要一些映射到其中的代码才能真正起作用(步骤定义)。

通常,如果要测试网站,则将使用Capybara;如果需要与非开发人员共享这些测试,则将使用Cucumber。这两个条件是独立的,因此您可以不使用其他条件,也可以两者都不用或不使用。

PS:代码片段中的也有一些RSpec。这是必需的,因为 cucumber 或 capybara 本身无法测试某些东西。他们依靠RSpec,Test::Unit或minitest完成实际的“通过或失败”工作。

关于testing - cucumber vs capybara ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15004918/

10-13 04:44