Sahte nesne olarak bir mock (veya çift) düşünebildiğim bir yakut dev değilim. Test ettiğinizde ve testinizde kolayca kullanılamayan bir nesneyle çalışmanız gerektiğinde, bu nesnenin nasıl davranacağını ve etrafında çalışacağını tahmin etmek için bir alay kullanabilirsiniz. Saplamalar benzer bir şekilde ancak bir nesne üzerindeki tek bir yöntemde kullanılabilir.
İşte hem bir sürü kullanmanın oldukça yapmacık örnek:
class Client
def connect_to_server
if Server.connect.status == 'bad'
show_an_error
else
do_something_else
end
end
def do_something_else; end
def show_an_error; end
end
context "failure" do
it "displays an error" do
bad_network_response = double("A bad response from some service", :status => 'bad')
Server.should_receive(:connect).and_return(bad_network_response)
client = Client.new
client.should_receive(:show_an_error)
client.connect_to_server
end
end
Sen mocks veya stubbing bir sürü kullanarak kötü bir fikir olduğunu tahmin edebilirsiniz; Bu, kodunuzun bazı kısımlarını testinizde maskelemekle birlikte, bazı zor/nadir test senaryoları için kolay bir çözümdür.
Fabrika Kız testleri için veri oluşturmak için kullanışlıdır. Fabrikaları, modelleriniz için örnekler oluşturmak için tarifler olarak kullanırsınız, çok fazla test verisi içeren bir şeyi test etmeniz gerekebilir ve bu, fikstürlerin kullanılmayacağı ve karmaşık nesneler oluşturmanın açıkça yorucu olabileceği bir durum olabilir.
Yanılıyor olabilirim, ama sanırım sadece yöntemlerle uğraşıyorsun. Saplama nesneler veya sahte nesneleri veya gömülü yöntemleri veya alay yöntemlerini kullanabilirsiniz. Fark, bunları nasıl kullandığınızdır.Saplamalar, gerçekten başka bir bağımlılık yapmadan çalışmayı test etmelidir. Mocks da aynısını yapar, ancak çağırmanın yapılması ve testin bir kısmı gereklidir. Hem taslakları hem de alayları olan sahte bir nesneye sahip olabilirsiniz. Rspec bile alay yerine artık "çifte" diyor. – fregas