Saya memiliki ini dalam pengujian saya
Project.should_receive(:find).with(@project).and_return(@project)
tetapi ketika objek menerima panggilan metode itu dua kali, saya harus melakukannya
Project.should_receive(:find).with(@project).and_return(@project)
Project.should_receive(:find).with(@project).and_return(@project)
Apakah ada cara untuk mengatakan sesuatu seperti
Project.should_receive(:find).with(@project).and_return(@project).times(2)
ruby-on-rails
rspec
Jakub Arnold
sumber
sumber
any_instance
?expect
Sintaks baru rspec akan terlihat seperti ini:untuk 2 kali:
tepat n kali:
setidaknya untuk n kali:
sumber
have_received
sintaks juga bekerja.expect(Project).to have_received(:find).exactly(n).times
dll.@Jared menunjukkan. Solusinya tidak berhasil untuk saya saat
any_instance
menelepon.Untuk setiap contoh saya akhirnya menggunakan rintisan daripada should_receive.
Ini akan berhasil untuk semua no. kali sekalipun.
sumber
should_receive
, sebagai lawanany_instance
, mengharapkan bahwa kelas menerima pesan beberapa kali.any_instance
di sisi lain umumnya digunakan untuk mematikan suatu metode.Jadi kasus pertama adalah ekspektasi yang ingin kami uji, sedangkan kasus kedua adalah melewati metode ke baris berikutnya sehingga kami dapat melanjutkan.
sumber