Tôi đang viết spec cho điều khiển:RSpec. Làm cách nào để kiểm tra xem phương thức đối tượng có được gọi không?
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
và điều khiển của tôi trông giống như:
def find_similar
@movies = Movie.find(params[:id]).search_similar
end
sau khi chạy các rspec tôi nhận được như sau:
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)>'
mà tôi dường như để hiểu và chấp nhận, bởi vì trong mã điều khiển của tôi tôi gọi phương thức Class (Movie) và tôi không thấy bất kỳ cách nào để kết nối "find_similar" với đối tượng, được tạo ra trong SPE c.
Vì vậy, câu hỏi là -> cách nào để kiểm tra xem phương thức được gọi trên đối tượng, được tạo theo thông số?
Đồng ý về việc quá cứng đầu, thấy quá nhiều kiểm tra kiểm tra rằng phương pháp stubbing hoạt động thay vì kiểm tra xem ứng dụng có hoạt động hay không. – njorden
đẹp nhất. đây là các tài liệu về relish: https://www.relishapp.com/rspec/rspec-mocks/v/2-5/docs/message-expectations Tôi cần bit này 'obj.should_receive (: message) .với ('more_than ',' one_argument ') ' – TomDunning
sử dụng thú vị các thẻ" " – fotanus