【问题标题】:Can devise sign_in() test helper accept a new_record?可以设计 sign_in() 测试助手接受 new_record 吗?
【发布时间】:2011-09-25 22:02:51
【问题描述】:

在下面的例子中,我可以使用build() 代替create()吗?

class UsersControllerTest < ActionController::TestCase  

  setup do
    @user = Factory.create(:user)
  end

  test "admin can get index" do
    sign_in @user
    get :index
    assert_response :success
  end

  test "user cannot get index" do
    sign_in @user
    get :index
    assert_response 403
  end

end

在实际使用中,用户在登录之前就已经创建(保存)了,所以这就是我的测试使用create() 的原因。但是,我想使用build(),因为我希望它能让我的测试更快。

设计README 没有明确表示可以使用 build()。

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

    根据 José 的这篇笔记,看起来用户记录必须被持久化。

    模拟永远不会起作用。当您说登录时,用户是 存储在会话中(基本上是用户类及其 id)。当你 访问控制器,根据 存储的数据。解决问题的最好方法是使用 持久化对象,就像工厂女孩一样。

    https://github.com/plataformatec/devise/issues/928

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 2021-11-08
      相关资源
      最近更新 更多