Rspec测试当前用户

时间:2014-12-09 10:53:23

标签: ruby-on-rails ruby-on-rails-4 rspec integration-testing

我是测试的新手。有人可以帮助我如何在rspec中测试current_user。

示例代码:

简单的一个:

def index
  @todos = current_user.todos
end

更难一点

  def index
    @events = current_user.participating_events.includes( 
           [:events_users, :participants,   :user])
  end

如何针对类似的问题编写rspec测试。

1 个答案:

答案 0 :(得分:1)

因为它是集成测试,所以您应该努力进行实际登录,以便规范管理控制器创建的会话。您可以按照on this answer的想法进行操作,但基本上您需要对给定用户进行身份验证。但是你已经在做了,所以也许你遇到的问题不明白。

我在测试中注意到的一件事是event检查了一些测试,但我无法看到它的定义。它就像你期望它以某种方式由rspec设置。如果是这样,那么这可能是您遇到的问题。对于这种规范,您应该从db加载对象以测试它们是否已创建,因此在填写表单并保存事件之后,在测试结果之前,使用

从DB加载它。
event = Event.last

然后探测它以存储值。

让我知道这是否有意义,如果这可以解决您的问题。否则,可能会尝试澄清您想要完成的任务,或者发布您所遇到的任何错误的回溯。