2011-09-07 16 views

cevap

16

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.

+1

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

15

İlk durağı Martin Fowler ünlü yazıdır. Test çiftleri tipik olarak bir Sistem Altında Test (veya Under Under Test) tarafından ihtiyaç duyulan bağımlılıkları simüle etmek için kullanılır, böylece SUT/CUT bağımlılıklarından bağımsız olarak test edilebilir.

örnekleri

  • bir saplama: Wikipedia`dan

    - (Uyarı hassas terminoloji Jeff here tarafından belirtildiği gibi oldukça hassas bir konu, örneğin olabilir) yöntem sadece sabit bir değer döndürür SUT tarafından çağrılan tavuk, ör. SUT'nin spesifik bir test durumunu yürütmek için.

  • *Mockito (Java) ve Moq (.Net) gibi çerçeveler, bağımlılık arabirimine karşı minimum düzeyde bir kod ile sahte sınıflar oluşturmanıza ve SUT öğesinin doğru olarak etkileşimde bulunup bulunmadığını doğrulayabilmenizi sağlar. Örneğin SUT, sahte parametrelerin doğru parametrelerle doğru sayısını denediğini kontrol ederek.

* Yasal Uyarı - Ben

+6

Bunu okuduğunuzda, [TDD alay konusu yapma] 'ya geçebilirsiniz (http://avdi.org/devblog/2011/09/06/making-a-mockery-of-tdd/) –

İlgili konular