2011-07-27 36 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