2010-10-07 64 views
0

第一关 - 我知道,这通常是可怕的做法,因为黄瓜是指仅测试输出。我只想为一个非常特定的情况做这个。黄瓜访问控制器测试登录

我有一个处理使用Cookie由另一个应用程序,我维护设置用户身份验证的应用程序。我想写的认证非常简单的集成测试:

Given I have logged as "some_user" on the SSO server 
When I visit any page 
Then I should be logged in as "some_user" 

我对当时的步骤定义如下:

Then /^I should be logged in as "([^"]*)"$/ do |username| 
    user = User.find_by_username(username) 
    assert_equal @controller.current_user, user 
end 

显然,这与“未定义的方法“CURRENT_USER失败'为零:NilClass“。

在情况不是很明显 - 的ApplicationController#CURRENT_USER返回无论是当前登录或无用户。

回答

0

您可以访问某个页面上当前登录的用户名显示。
像:
When I go to the account page
Then I should see "Welcome user" within "div#login"

+0

我已经考虑过这样做 - 应用程序的标题显示不同的东西登录的用户 - 但感觉脆,哈克给我。我宁愿测试别的地方/在除了测试,直接,用户是否登录。 – bhaibel 2010-10-08 20:45:29

+0

为什么你认为它是哈克?如果你要在浏览器中测试你的应用程序,我的意思是模拟一个真实的用户,你将如何检查当前登录的用户?我认为这就是黄瓜的作用,模拟真正的点击。 – 2010-10-08 21:27:26

+0

它的间接困扰我吗?这可能是我需要克服的一种个人风格的东西。它之所以感觉*脆,*不过,相对于哈克是,那么它变得更加敏感(也许过敏),以正是用户头部看起来像在任何时候 - B/C,因为它是一个用户切换*回*从SSO /用户数据库管理应用程序到主应用程序,他们看到的并不是真正的欢迎页面。 – bhaibel 2010-10-13 17:50:23