0

アプリにdeviseをインストールした後、機能テストを再び機能させようとしています。アプリは引き続き問題なく動作しますが、何らかの理由で「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は2番目のputsセッションにありましたが、「warden.user.user.key」にはありませんでした。「sign_in@user」を呼び出すかどうかに関係なく、常に「続行する前にサインインまたはサインアップする必要があります」というアラートでリダイレクトされます

編集-私はmm-deviseでdeviseを使用しています(MongoDBとMongomapperを使用しているため)

助けてくれてありがとう-それはデータベースをクリアしないことの問題であることが判明しました。ユーザーの作成方法は相互に上書きされませんでしたが、どのユーザーがサインインするかはあいまいでした。

4

2 に答える 2

0

最初の puts セッションで「warden.user.user.key」の値として何が表示されますか?

于 2012-08-19T05:25:15.460 に答える
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 に答える