2009-09-23 3 views
10

Я изучаю огурец и Webrat с Rails и хотел бы посоветоваться с лучшим способом протестировать форму «изменить». Когда я просматриваю профиль пользователя, мне предоставляется форма редактирования с информацией пользователя, предварительно заполненной полями формы. Я хотел бы иметь возможность проверить, что поля действительно содержат информацию, которую я ожидаю. Вот мой сценарий:Как проверить, что форма предварительно заполнена значениями с помощью Cucumber и 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 

Огурцы говорят мне, правильно, что мне нужно определить следующие пользовательские действия:

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

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

Я уверен, что я могу выяснить некоторые неприятные регулярные выражения для осуществления оценки этих шагов , но я чувствую, что должно быть что-то уже существующее или более элегантное, что я могу сделать. Как вы оцениваете формы с данными, предварительно заполненными в полях формы?

ответ

15

Посмотрите на особенности/step_definitions/webrat_steps.rb следующее определение шага выглядит то, что вы ищете:

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

Dang. Я не знаю, как я это пропустил! Исходя из этого, я создал версию, которая работает для пустых полей. Как и в/^ поле "([^ \"] *) должно быть пустым $/", реализуемым как" field_labeled (field) .value.should == nil ". Благодаря! конец' – SingleShot