0

RSpec を使用して、Rails でのコントローラーの動作をテストしています。私が持っている期待の 1 つは、次のシナリオです。

  1. ユーザーが、保護された (ログインが必要な) URL に params でアクセスしようとしました/home?val=123
  2. そのユーザーはログイン ページにリダイレクトされます。
  3. ログイン後、ユーザーは、関連するパラメーターを使用して、最初に要求された URL にリダイレクトされる必要があります。

認証システム (omniauth を使用) に devise を使用しており、ユーザーをログインさせるための推奨マクロをセットアップしました。

上記の動作の流れをテストする方法に少しこだわっています。

describe HomeController do
  context "user is logged out" do
    it "redirects back to original page after signin" do
      # user is not signed in - redirected to login page
      get :index, { :val => '12345' }
      current_user.should_not be_present
      expect(response).to redirect_to(login_page_path)

      # should now login the user and verify
      # that request.fullpath == '/home?val=12345'

      # ?...
    end
  end

end

それはコントローラの仕様に属していますか?ヘルプや例をいただければ幸いです。ありがとう。

4

1 に答える 1

1

Luacassus はまともな答えを持っているように見えますが、Capybara でのリクエスト テストは見ましたか?

Rails Castsに関する非常に適切なチュートリアルがここにあります。

これは基本的に、サインアップ テストをテストするために使用するものです。ただし、omniauth はテストしていないため、探しているものとは異なる場合があります。

于 2012-11-21T10:18:40.930 に答える