質問

私は今日、私のレールのアプリのための機能テストを書き始めました。私は、RESTfulな認証プラグインを使用します。私は、誰かが私のために明確にすることを願って夫婦紛らわしいものに走っています。

私のレールのアプリで機能のほとんどは、認証を必要とするため、

1)私は、迅速なログイン機能を書いています。

def login_as(user)
   @request.session[:user_id] = user ? user.id : nil
end

私は、この関数で参照の問題は、基本的に認証を偽装しています。私はこれを心配すべきですか?多分限り、私はどこかで真の認証方法をテストとしてこのルートを行くこと大丈夫です。それとも、これはひどい習慣です。

2)は、第2の混乱を招く事は、私の機能テストではいくつかの場所で、私が起こるために完全な認証プロセスを必要とするということです。ユーザーがアクティブになると、私はdo_activate方法は、ユーザーのためのいくつかの初期のオブジェクトを作成しています。それは理にかなっている場合は、学生のアプリケーションのための空白のノートブックオブジェクトとペンオブジェクトの作成に似ています。

は、だから、きちんと自分のアプリケーションをテストするために、私はそれらのオブジェクトが作成されるので、その活性化状態をヒットするユーザーを必要としています。私は現在、ユーザーを作成するファクトリー・ガールを使用して、その後、偽の認証に上記login_as関数を呼び出しています。

私は別のオプションは、完全な認証手順をスキップしてちょうどファクトリー・ガールと空白のオブジェクトを作成することですね。私はどこか別の適切な認証をテストすることができます。

あなたはどう思いますか?私は適切な順序を経る必要がある場合は、なぜdo_activate機能を呼び出す以下のコードではないのですか?

user = Factory.create(:user)
user.active = 1
user.save

ありがとうございます!

役に立ちましたか?

解決

それを偽造完全に許容可能です。

しかし、あなたが保護したい物事が保護されていることを確認し、他のテストを書きます。だから、

test "it should show the profile page" do
  user = Factory(:user)
  login_as(user)
  get :show, :id => user
  assert_response :success
end

test "it should not show the profile page cos I'm not logged in" do
  user = Factory(:user)
  get :show, :id => user
  assert_response :redirect
end

フォローアップのために私を打つお気軽に!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top