有人可以解释这两个平台之间的差异吗?
都是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/