Qualcuno può spiegare la differenza tra tra queste due piattaforme? Sono entrambi parte di BDD ma perché dovrei usare l'uno o l'altro o entrambi insieme? Grazie per le risposteCucumber vs Capybara
risposta
cucumber è uno strumento BDD che esprime scenari di test in un linguaggio specifico del settore leggibile dal business.
capybara è uno strumento di test automatico (spesso utilizzato) per applicazioni ROR.
Nella pagina di github capybara, c'è un esempio su using capybara with cucumber.
Il cetriolo è uno strumento BDD generico. Non sa nulla di app web. Quindi le definizioni dei passi di Cucumber chiamano Capybara per testare le app web.
Capybara è uno strumento che interagisce con un sito Web come un essere umano (come visitare un URL, fare clic su un collegamento, digitare il testo in un modulo e inviarlo). È usato per emulare il flusso di un utente attraverso un sito web. Con Capybara è possibile scrivere qualcosa del genere:
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
cetriolo è uno strumento per scrivere i test leggibili che vengono mappati in codice. Con esso, è possibile riscrivere l'esempio precedente come questo:
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
Il testo normale quasi interpretazione è utile per passare intorno non sviluppatori, ma anche bisogno di qualche codice mappato in esso per lavorare in realtà (le definizioni di passo).
In genere si utilizzerà Capybara se si sta testando un sito Web e si utilizza Cucumber se è necessario condividere tali test con i non sviluppatori. Queste due condizioni sono indipendenti, quindi puoi usarne una senza l'altra o entrambe o nessuna.
PS: nello snippet di codice c'è anche qualche RSpec. Questo è necessario perché Cucumber o Capybara non possono effettuare autonomamente il test . Si affidano a RSpec, Test :: Unit o minitest per eseguire il lavoro "Pass o Fail".
Capybara non è specifico di ROR, può essere utilizzato per testare le app Web scritte in qualsiasi lingua. –