2010-08-17 163 views
2

我使用RoR 3,并且我想控制器的测试中发生了一些变化。RoR测试控制器

没有

def test_should_create_post 

test "should create user" do 
... 
end 

有什么能解密如何是映射等?因为我没有明白。

而第二件事。如何编程(什么断言)用来测试登录?

回答

1

所以test "something here"风格是rails的方式来帮助我们。它基本上与def test_as_you_want相同,但他们通过删除那些令人讨厌的'_(下划线)'并用字符串包装实际测试措辞来帮助我们。这个变化回来了,呃...也许2.3.x.这个事实必须被检查,但至少在一年半之前。

你的第二件事是更难回答的人。你使用的是什么插件,或者你是那些编写自己的认证系统的人之一?

无论哪种方式,请查看'着名'auth插件如何做。从宁静的验证来制定,基本上你想测试,你可以:

  1. 注册用户帐户
  2. 所有您的确认邮件的发送等。

大部分的这些“作弊”或者通过传递一个名为signed_in users(:one)的帮手来轻松解决问题。假设你很酷并使用灯具。

基本上这里是一个辅助方法,如果你的Auth插件/宝石没有一个,就像我第一次写测试时没有它的Clearance一样......不确定它现在是否有它但它揭示了它的外观。请注意,我已经注释掉宁静的验证和他/他们做到了:

#login user 
def login_user(user = users(:one)) 
    #Restful Auth Example 
    # @request.session[:user_id] = user ? users(user).id : nil 
    # Clearance 
    @controller.class_eval { attr_accessor :current_user } 
    @controller.current_user = user 
    return user 
end 

其实我觉得我偷了这从他们早该登录助手......这大概就是我所做的。无论哪种方式,它显示你如何伪造用户登录。

现在,当您测试时,只需将此login_user方法传递给您的测试即可,当您需要用户登录并开始测试该方法的其余部分时,无需担心它们实际登录。这就是插件应该执行的操作和1000人以下它在github上,如果没有至少登录那家伙会尖叫。

欢呼

+0

我写我自己的身份验证系统,这是非常简单的,在模型中身份验证方法,singup,登录行动和简单的意见。它的全部我需要。 我需要: 发送请求登录操作一次数据良好,一次使用不好的数据。并检查会话变量是否设置。我不知道如何实现最后的事情。 – matiit 2010-08-18 06:43:52

+0

所以你真正的问题是“我如何测试我的会话变量正在设置”? – pjammer 2010-08-18 13:37:43

+0

是的,这将是一个很好的问题 – matiit 2010-08-18 21:04:14