2011-02-24 36 views
2

我写的第一个rails应用程序使用railstutorial的手动验证。如何获得测试许可中的身份验证状态

对于我的第二个应用程序,我使用Clearance。我正在尝试编写集成测试,以确定单击登录/注销链接是否有效。在railstutorial版本,我可以使用以下命令:

describe "success" do 
    it "should sign a user in and out" do 
    user = Factory(:user) 
    visit signin_path 
    fill_in :email, :with => user.email 
    fill_in :password, :with => user.password 
    click_button 
    controller.should be_signed_in 
    click_link "Sign out" 
    controller.should_not be_signed_in 
    end 
end 

我该怎么做等价的东西有间隙?我只是无法解决问题。它似乎告诉我,控制器是零。

回答

0

我做了EXACT同样的事情,阅读Rails教程,然后使用Clearance启动我自己的应用程序。用户似乎是正确的起点,所以这就是我开始的地方。我甚至没有替换显示Rails链接等的默认静态主页。我相信这实际上是问题所在。 Clearance并未定义用户个人资料页面或任何内容,因此当您登录时,它会将您重定向到主页(除非您在别的地方,但需要登录)。默认主页只是一个静态文件,所以它不会在典型的Rails请求周期中运行,也不会加载任何控制器。

我最终只是增加一个超级简单的页面控制器(像在Rails的教程,第3章),因此在登录后会重定向到动态页面,这使得上述几乎通过测试。最后的编辑,我需要把事情的工作是

click_link "Sign Out", :method => :delete 

在这里,我指定click_link应该使用:delete方法,而不是:get,它aparently(默认设置)。我还是比较新的Rails,几天前几乎没有完成这本书,所以我不确定为什么只有click_link在本书中工作,但没有在我的应用程序(也许从Rails 3.0到3.1?),但这一切都过去了。

+0

我不得不阅读我自己的问题,甚至找出我问了什么!我想我最终做了一个完全不同的方式,但你的回答是我所问的问题的正确解决方案。 – Nick

+0

是的,问题是在旧的方面,但我的情况是这样一个完全匹配,我只需要回答它:) – Chaulky

相关问题