3

登録コントローラー (Devise の組み込みコントローラーをオーバーライドする) をテストしようとしていますが、次のテストを実行すると:

test "should create user" do
    post :create, user: { email: "temp12345@email.com", first_name: @user.first_name}
    assert_redirected_to user_path(assigns(:user))
end

ただし、戻ってくる応答には、「続行するにはサインアップ/サインインする必要があります」と表示されますが、ブラウザーから手動でこれを実行してユーザーをサインアップできるため、意味がありません。

何か案は?

4

1 に答える 1

5

ちょうど同じ問題がありました。答えはデバイスのドキュメントにあります:

2)Deviseの内部コントローラーまたはDeviseから継承するコントローラーをテストする場合は、リクエストの前にどのマッピングを使用するかをDeviseに指示する必要があります。Deviseはルーターからこの情報を取得するため、これが必要ですが、機能テストはルーターを通過しないため、明示的に通知する必要があります。たとえば、ユーザースコープをテストする場合は、次のようにします。

@request.env["devise.mapping"] = Devise.mappings[:user]
get :new
于 2012-10-03T17:29:04.253 に答える