我如何使用设计user_signed_in?集成测试中的方法?

时间:2015-09-13 21:34:19

标签: ruby-on-rails devise

当我在集成测试中有assert user_signed_in?时,它表示该方法未定义。有没有办法在我的测试中使用这种方法?我正在使用rails 4和最新版本的设计。这是我的测试文件:

require 'test_helper'

class UsersSignupTest < ActionDispatch::IntegrationTest

test "valid signup information" do
    get new_user_registration_path
    assert_difference 'User.count', 1 do
      post_via_redirect user_registration_path, 
                                     user: { first_name: "Example",
                                             last_name:  "User",
                                             email:      "user@example.org",
                                             password:              "password",
                                             password_confirmation: "password" }
    end
    assert_template 'activities/index'
    assert user_signed_in?
  end

1 个答案:

答案 0 :(得分:5)

Height+=1; [self.inputView setNeedsUpdateConstraints]; 模块中包含user_signed_in?方法,这在集成测试中不可用,因此您无法使用它。

您可以选择模拟此方法(这不会真正满足您的测试需求),也可以通过查找仅在用户登录时呈现的页面内容来测试用户是否已登录,如{{1例如,链接或Devise::Controllers:Helpers消息。

对于您的控制器测试,您可以使用设计测试助手Logout,为您公开Signed in successfullyinclude Devise::TestHelpers方法,更多内容在Gem的主页https://github.com/plataformatec/devise < / p>