前提・実現したいこと
Rspecを使ってモックを使ったmodel specを書いています。
Hogeクラスに定義されているfugaメソッドが呼ばれたらエラーを発生させたいのですが、fugaが2つの引数を持っており Hoge.fuga('arg1', 'arg2')
のような形で呼び出されています。
rspecのモックにおいてメソッドが引数を持つ場合の記述方法を調べているのですがそれらしいものを発見できず、.withを使うと良いという情報もありましたがエラーが直らない状態です。
発生している問題・エラーメッセージ
ArgumentError: wrong number of arguments (given 0, expected 1..2)
該当のソースコード
ruby
1context 'モックのテスト' do 2 let(:hoge) { double('hoge') } 3 before do 4 allow(Hoge).to receive(:hoge).and_return(hoge) 5 allow(hoge).to receive(:fuga).and_raise(StandardError) 6 end 7 it ... 8 (省略) 9 end 10end
試したこと
ruby
1allow(hoge).to receive(:fuga).with('arg1', 'arg2').and_raise(StandardError)
上記のようにwithを使ったところ以下のエラーに変わりましたが、メソッドの呼び出し元などどこを見ても定義されていない values
がnilなレシーバに対して使えないというエラーが出ており
そもそも.withで指定する方法が合っているのかも不明なため、いまいちピンと来ていない状態です。
何か分かりましたらご教示お願いいたします。
NoMethodError: undefined method `values' for nil:NilClass
補足情報(FW/ツールのバージョンなど)
Rails 6.0.3
回答1件
あなたの回答
tips
プレビュー