2016-08-29 9 views
1

私のコントローラに自動的に与えられるハッシュを模擬する必要があります。私は現在、私のアプリケーションコントローラ用のRspecテストを書こうとしています。社内の宝石からユーザー情報を取得する必要があります(私はセッションハッシュを嘲笑して見たソリューションを使用することができませんでした)。Rails/Rspecでハッシュを模擬した

# Create and store the user if they have never logged in before, set user if they have an existing record 
    def logged_in_user 
    @logged_in_user ||= User.find_by(id: current_user['id']) || create_user 
    end 

    def create_user 
    User.create(name: current_user['name'], email: current_user['email'], id: current_user['id']) 
    end 

CURRENT_USER自宅ログイン宝石に当社から供給されたハッシュである、私はそれを得るためにコードを追加しただけの事は、「マウント....」さroutes.rbをして(それは私のコントローラ内の他の場所では検索/呼び出されず、これが使用される唯一の場所です)。私は自分のコードが動作することを知っています。なぜなら、ページにログインしてユーザ情報が保存されているのを見ることができるからです。しかし、すべてのメソッドをカバーするRspecテストを書く必要があります。私は "current_user"という名前のハッシュを定義しようとしましたが、 "[]"はクラスの定義されていないメソッドであることを知らせるエラーが表示されます:NilClass。私は(CURRENT_USER)を受信.TO(メソッド)許可を使用して試してみましたが、私はこれを行うとき、我々のコード・カバレッジ・ツールは、ユーザーのステートメントを作成の内部が

答えて

2

このコード

allow_any_instance_of(ApplicationController). 
    to receive(:current_user). 
    and_return({ 
    "name" => "your stubbed name", 
    "email" => "stubbed email", 
    "id" => "100" 
    }) 
+0

を試してみてくださいに達していなかったことを私に伝えますねえ、ありがとう!これは働いた –