2010-05-12 2 views
1

Мне нужно протестировать двухэтапную систему входа в систему, которая сначала запрашивает адрес электронной почты и пароль, а затем представляет пользователю два списка выбора, содержащие [a-zA-Z0-9]. Ярлыки рядом с выпадающим списком имеют форму «Выбрать символ X из вашей фразы безопасности», где X - это случайный индекс символов из известной фразы безопасности.Как проверить форму, требующую ввода двух случайных символов из фразы безопасности?

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

Вот сценарий, я до сих пор и шаги участвуют:

Scenario: valid login email, password and secret phrase takes me to the dashboard 
    Given I am not logged in 
    When I log in as "[email protected]" 
    Then I should be on the dashboard page 
    And I should see "Your Dashboard" 

When /^I log in as "([^\"]*)"$/ do |login| 
    visit path_to('Login page') 
    fill_in "Email", :with => login 
    fill_in "Password", :with => "Password123" 
    click_button "Log in" 
    response.should contain("Please verify some characters from your security phrase") 
    select "a", :from => "Select character X of your security phrase" 
    select "b", :from => "Select character Y of your security phrase" 
    click_button "Submit" 
end 

Например, если фраза безопасности «Secret123», X = 3 и Y = 8, выше придется производить эквивалент:

select "c", :from => "Select character 3 of your security phrase" 
select "2", :from => "Select character 8 of your security phrase" 

числа х и Y в фактической страницы находятся внутри диапазона # svc_1 и диапазон # svc_2 соответственно.

Спасибо,

ответ

1

После долгих возился я, наконец, понял это. Документирование здесь, чтобы оно помогло кому-то другому в той же ситуации. В целом_steps.rb:

When /^I log in as "([^\"]*)"$/ do |email| 
    visit path_to('Login page') 
    fill_in "Email", :with => email 
    fill_in "Password", :with => "password" 
    click_button "Log in" 
    response.should contain("Please verify some characters from your secret phrase") 
    select_correct_secret_phrase_char("span#sec_1") 
    select_correct_secret_phrase_char("span#sec_2") 
    click_button "Submit" 
end 

def select_correct_secret_phrase_char(css_selector) 
    response.should have_selector(css_selector) do |scope| 
    select "Secret1"[(scope.text.to_i)-1].chr, :from => "Select character #{scope.text} of your security phrase" 
    end 
end