2009-02-25 24 views
0

Basit bir şey yapmaya çalışıyorum diye hayal kırıklığına uğradım - Sahte bir nesne üzerinde bir yöntemi çağırmak ve dönüş değerini kontrol ETMEM. Sadece doğru parametrelerle çalıştırıldığını kontrol etmek istiyorum.Bir yöntem çağrısını nasıl doğrularım ve EasyMock'taki geri dönüş değeri yoksayılır?

Örnek:

MyInterface mockObject = createMock(MyInterface.class); 
SomeObject param = new SomeObject(); 

/* the write object is not void and returns an instance of FooOjbect. 
* I want to ignore everything to do with FooObject - I do not care what 
* it is because I do not store its value. How do I do this? */ 
mockObject.write(param); 

replay(mockObject); 

someOtherObjectThatCallsAboveMockObject.process(mockObject); 

verify(mockObject); 

Yani herhangi EasyMock uzmanları orada mısın? Temelde uygulamanın, aslında bir üçüncü taraf ağ kütüphanesinden (Apache Mina) geldiğinden ve API üzerinde herhangi bir kontrole sahip olmadığımdan, geri dönüş değerini saklamadığımı ve saklamadığımı temel alan yöntemin tasarımı konusunda endişelenmiyorum.

DÜZENLEME: Sonuç biraz zaman sonra

kolay değildi ve Mockito gitti çünkü EasyMock terk ulaştı. Bunun yerine

mockObject.write(param) 

yazma ait

+1

Ben de Mockito olarak değiştirdim. Çok daha kolay ve rahat, sanırım. – guerda

cevap

3

EasyMock.expect(mockObject.write(param)).andReturn(/* return value here */); 

Hala doğru olduğu kodu için bir değer döndürmek gerekir ama testinde daha ileride değerini göz ardı edebilirsiniz.

+0

Daha sonra değeri nasıl görmezden geldiğim konusunda bir örnek verebilir misiniz? Belgeleri inceledim ve iyi bir örnek göremiyorum. – Elijah

+0

@Elijah "Değeri görmezden gelmek" ile, gerçek sınıfınızın bu değerden gelen değere bağlı olmadığı anlamına gelir. Eğer gerçek sınıf bu dönüş değeri üzerinde hareket etmiyorsa, bunu görmezden geliyor demektir. Bir dönüş değeri vermelisiniz, dönem. –

+0

... testinizde dikkate almayın - tekrar referans alın. Gerçek kodunuzla ilgili bir sorun mu yaşıyorsunuz? AndReturn (null) sorun yaratıyor mu? Sadece dönüş değerini yeterince yapmaya çalışıyorsunuz, böylece kod arzu ettiğiniz şekilde ilerliyor. – Stephen