2011-07-27 41 views
0

我在我的黃瓜測試套件中有一個步驟定義,它對用戶進行身份驗證,並嘗試加快我的測試套件,我希望執行此步驟來檢查用戶是否已通過身份驗證。也許這是一個壞主意,因爲這意味着測試可能取決於對方......我不知道。但是,我會如何做到這一點?不幸的是,我不太熟悉Ruby。cucumber,rspec,webrat if else else on matcher

我希望我可以在DOM中渲染一個類,所以我可以用have_selector或其他東西來測試它。這也可能是一個壞主意...

Given /^I am authenticated as a "([^"]*)" user$/ do |role| 
    #TODO: only do this if the user is not authenticated 
    visit('/login') 
    fill_in "name", :with => "something" 
    fill_in "pass", :with => "password" 
    click_button 
    response_body.should contain("Log out") 
end 
+0

您可以自定義** visit_by_not_authenticated **方法,並指向網頁重置會話 – Anatoly

+0

@mikhailov感謝您指出。我會看看:) – Rimian

回答

1

你說得對,這將是一個壞主意。但是,如果你真的想這樣做,正確的方法是檢查頁面上的任何類型的文本,例如你可以有登錄用戶名的狀態欄。這將是正確的做法,因爲它模擬人類的行爲,有點像 - 哦,這裏是我的用戶名 - 這意味着我已經登錄:)

這裏怎麼你的步伐可能看起來就像是:

Given /^I am authenticated as a "([^"]*)" user$/ do |role| 
    unless page.has_content?(username) 
    visit('/login') 
    fill_in "name", :with => "something" 
    fill_in "pass", :with => "password" 
    click_button 
    response_body.should contain("Log out") 
    end 
end 
+0

謝謝!那麼,爲什麼這是一個壞主意呢?是否因爲測試依賴於以前的測試? – Rimian