私は、コントローラの仕様書いている:RSpec。オブジェクトメソッドが呼び出されたかどうかをチェックする方法?
it 'should call the method that performs the movies search' do
movie = Movie.new
movie.should_receive(:search_similar)
get :find_similar, {:id => '1'}
end
を、私のコントローラは次のようになります。私は、次の取得はRSpecを実行した後
def find_similar
@movies = Movie.find(params[:id]).search_similar
end
:
私は思えFailures:
1) MoviesController searching by director name should call the method that performs the movies search
Failure/Error: movie.should_receive(:search_similar)
(#<Movie:0xaa2a454>).search_similar(any args)
expected: 1 time
received: 0 times
# ./spec/controllers/movies_controller_spec.rb:33:in `block (3 levels) in <top (required)>'
私のコントローラコードではクラス(ムービー)メソッドを呼び出すため、私はオブジェクトに "find_similar"を接続する方法がないので、理解して受け入れますc。
したがって、問題は - >メソッドがオブジェクトに対して呼び出されたかどうかを確認する方法は何ですか?
over-stubbingについて同意すると、アプリが動作しているかどうかを確認するよりも、そのメソッドのスタブを確認するテストが多すぎます。 – njorden
いいです。ここにはおいしさに関するドキュメントがあります:https://www.relishapp.com/rspec/rspec-mocks/v/2-5/docs/message-expectationsこのビットが必要でした。obj.should_receive(:message).with( 'more_than '、' one_argument ') ' – TomDunning
" "タグの面白い使い方 – fotanus