お世話になっております。
Rspecでfeatureテストを書いているのですが、エラー発生の確認のために次のような事をしたいと思っています。
環境
- ruby: 2.1
- rails: 4.2系
- rspec: 3系
ruby
1scenario 'エラー画面に遷移する事' do 2 # hoge画面に遷移した際に@hogeがnilだった場合、エラー画面に遷移する 3 visit hoge_path 4 @hoge = nil # 実際はここでnilを代入しても、visitの処理は終わっているため if @hoge.nil?の判定はtrueにならない 5 expect(page).to have_content 'unexpected error' 6end
ruby
1 2def hoge 3 @hoge = get_some_data 4 raise 'unexpected error' if @hoge.nil? # raiseでエラー画面に遷移するものとする 5 ... 6end 7
上記はイメージですが、外部からのパラメタに依らずに生成される変数@hogeに、任意の値を代入する事は可能なのでしょうか。よろしくお願いいたします。
追記
※例が不適切で知りたいことと異なっていたので、もう少し実際に即した形を提示します※
上記例では@hogeのようにインスタンス変数にしてますが、実際はcookieの値です。
[要件]
- あるcookieの値を暗号化して保存している
- 取得時に復号化して取り出している
- この復号化に失敗した場合nilが返るので、例外判定したい
ruby
1 2def hoge 3 get_cookie # before_actionなどで実行されるものと想定 4 ... 5end 6 7private 8def get_cookie 9 cookie_hoge = DummyUtil.decrypt(cookie[:hoge]) #不正な値で復号化に失敗するとnilが返る 10 raise 'unexpected cookie value' if cookie_hoge.nil? 11 ... 12end
もはやprivateメソッド内の処理なのでmodelなりcontrollerの単体テストで確認すべきかも知れませんが、「cookieの復号化に失敗した場合はエラー画面に遷移すること」というfeatureテストを書く方法があれば、ご教示頂きたいです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/09 03:15
2017/08/09 08:37
2017/08/09 09:09
2017/08/12 03:11