0

在将设计安装到我的应用程序后,我正试图让我的功能测试再次运行。该应用程序仍然可以完美运行,但由于某种原因,在我使用“sign_in @user”后,数据在会话中,但在我尝试“get :index”之类的操作后,设计(看守)会话数据不再存在

test "should get index" do
  @user = FactoryGirl.create(:user)
  session[:session_id] = 4
  session['warden.user.user.key'] = sign_in @user
  puts session
  get :index
  puts session
  assert_response :success
  assert_not_nil assigns(:departments)
end 

我手动设置了会话 ID 和“warden.user.user.key”,但 session_id 在第二个 puts 会话中,但不是“warden.user.user.key”。无论我是否调用“sign_in @user”,它总是会重定向为“您需要先登录或注册才能继续”警报

编辑 - 我正在使用带有 mm-devise 的设计(因为我使用的是 MongoDB 和 Mongoapper)

感谢您的帮助 - 原来是没有清除数据库的问题。创建用户的方式并没有相互覆盖,但是哪个用户将登录是模棱两可的。

4

2 回答 2

0

当我使用 Cucumber 时,我认为你应该像我在这里做的那样:

# This gives you the login_as(@user) method when request object is not present
include Warden::Test::Helpers
Warden.test_mode!
After { Warden.test_reset! }

Given /^I am an authenticated user$/ do
  @current_user = FactoryGirl.create(:user)
  login_as(@current_user, :scope => :user)
end

...并清理您的用户工厂以删除您可能拥有的任何凭据。

于 2012-08-19T06:19:38.663 回答
0

在第一个 puts 会话中,“warden.user.user.key”的值显示什么?

于 2012-08-19T05:25:15.460 回答