【问题标题】:Rspec tests for current user当前用户的 Rspec 测试
【发布时间】:2014-12-09 10:53:23
【问题描述】:

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

示例代码:

简单的一个:

def index
  @todos = current_user.todos
end

再难一点

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

我如何为类似的问题编写 rspec 测试。

【问题讨论】:

  • 到目前为止我尝试过的示例。它“应该在索引页面中包含所有待办事项”确实访问“/todos”expect(todo.title).to eq(title)expect(todo.desc).to eq(desc) end 但我不确定如何检查current_user 的待办事项...等
  • 在身体问题中发布您的尝试。
  • 是的,我写了代码。但是我只为与当前用户没有任何关系的 CRUD 操作编写代码。现在我也想为当前用户编写测试。这是我的测试文件的链接,我写道。 [链接] (pastebin.com/j4m5jTv3)
  • 阅读this
  • 我实际上并没有使用 Devise 或任何其他进行身份验证。我只是用 bcrypt 手动完成。

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


【解决方案1】:

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

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

event = Event.last

然后探测它存储的值。

让我知道这是否有意义以及这是否解决了您的问题。否则,也许尝试澄清您要完成的工作或发布您遇到的任何错误的回溯。

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多