2012-09-12 15 views
13

RSpec'te stub_model ve mock_model arasındaki fark nedir? Şimdiye kadar, bu saplamaların gerçek yöntemin çağrılmasını ve önceden tanımlanmış bir değeri geri döndürmesini engellemek için kullanıldığını biliyorum, ve sahtekarlar aslında beklentilerdir ve yöntemin alıcıda çağrılmasını gerektirir.RSpec'te stub_model ve mock_model arasındaki fark nedir?

Ayrıca, bu saplamaların/alayların, modele dokunmadan kontrolörlerde olduğu gibi izole testlere izin vermek için kullanıldığını da biliyorum. Ama her ikisi de tam olarak kullanıldığında hala bu iki yöntemle karıştırılmıyorum? Ayrıntılar ve örnekler çok takdir edilecektir. Çok teşekkürler!

+0

bu sorunuzun ama benim için yararlı bir şey olduğunu RSpec fark edildi "alay" için geçerli olup olmadığını emin değilim "koçanları" sahte yöntemleri oluşturmak için ise sahte nesneleri oluşturmak içindi . "Stub_model" veya "mock_model" hakkında konuşmuyorum, ancak alay ve saplamanın daha genel terimleri. – Dty

cevap

11

stub_model

stub_model yöntemi Etkin model modelinin bir örneğini oluşturur.

Herhangi bir örnekte (model, görünüm, denetleyici, yardımcı) stub_model'u kullanırken, etkileşim temelli olmaktan ziyade, duruma göre durum tabanlı olan örneklerde özellikle kullanışlıdır.

mock_model

mock_model yöntem üreten bir aktif model modeli gibi davranan bir Test çift. Bu, gerçek bir ActiveModel sınıfının bir örneğini oluşturan stub_model yönteminden farklıdır.

stub_model üzerinden mock_model'un yararı, gerçek bir iki katı olmasıdır, bu nedenle örnekler davranışa (veya yanlış davranışa) veya başka bir kodun varlığına bağlı değildir. Denetleyici özellikleri üzerinde çalışıyorsanız ve varolmayan bir modele ihtiyacınız varsa, bir dizeyi mock_model geçirebilir ve oluşturulan nesne, bu dizenin adında bir sınıf örneğine sahip gibi davranacaktır.

RSpec docs: stub_model ve mock_model

İlgili konular