2009-09-23 9 views
10

Sto imparando Cetriolo e Webrat con Rails e vorrei qualche consiglio sul modo migliore per testare un modulo di "modifica". Quando sfoglio il profilo di un utente mi viene presentato un modulo di modifica con le informazioni dell'utente pre-compilate nei campi del modulo. Mi piacerebbe essere in grado di verificare che i campi contengano effettivamente le informazioni che mi aspetto. Ecco il mio piano d'azione:Come faccio a verificare che un modulo sia precompilato con valori usando Cucumber e Webrat?

Scenario: View My Profile 
    Given I am logged in as "Mike" with password "secret" 
    When I go to my profile page 
    Then I should see "Mike" in the "Login" field 
    And I should see "[email protected]" in the "Email" field 
    And I should see a blank "Password" field 
    And I should see a blank "Password confirmation" field 

cetriolo mi dice, giustamente, che ho bisogno di definire i seguenti passaggi personalizzati:

Then /^I should see "([^\"]*)" in the "([^\"]*)" field$/ do |arg1, arg2| 
    pending 
end 

Then /^I should see a blank "([^\"]*)" field$/ do |arg1| 
    pending 
end 

Sono sicuro che posso capire qualche brutta regex per implementare la valutazione di queste operazioni ma credo che ci possa essere qualcosa di già esistente o più elegante che io possa fare. Come valuti i moduli con i dati pre-compilati nei campi del modulo?

risposta

15

Dai un'occhiata alla funzionalità/step_definitions/webrat_steps.rb, la seguente definizione fase sembra che quello che stai cercando:

Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value| 
    field_labeled(field).value.should =~ /#{value}/ 
end 
+0

Dang. Non sono sicuro di quanto mi sia mancato! Sulla base di questo ho creato una versione che funziona per i campi vuoti. Come in/^ il campo "([^ \"] *) "dovrebbe essere vuoto $ /" essendo implementato come "campo_segnalizzato (campo) .valore.should == nil". Grazie! fine' – SingleShot