2010-06-23 15 views
7

Sahte nesnenin aynı örneğinde belirli beklentileri yeniden tanımlamak mümkün mü? EasyMock - alay sıfırlama ama beklentileri korumak nasıl?

tamam doğrular bu testi olduğunu varsayalım: O zaman yapmak istiyorum ne

List<String> foo = createMock(List.class); 
expect(foo.get(1)).andReturn("Wibble").once(); 
expect(foo.size()).andReturn(1).once(); 
replay(foo); 
System.out.println(foo.get(1)); 
System.out.println(foo.size()); 
verify(foo); 

tanımlanan tüm beklentileri koruyarak, ama bunlardan birini değiştirerek, alay sıfırlamak olduğunu söylemek:

reset(foo); 
// Redefine just one of the two expectations 
expect(foo.get(1)).andReturn("Wobble").once();     
System.out.println(foo.get(1)); 
System.out.println(foo.size()); 
verify(foo); 

Sıfırlama çağrısından sonra foo.size tanımlanmadığı sürece çalışmaz.

Her seferinde beklentileri yeniden oluşturmak yerine bunu yapmak için iyi bir yol olmalı mı? peşin

Teşekkür

+0

İyi soru ... Bunu EasyMock API kullanarak tamamlamanın bir yolu yok mu? –

cevap

2

bir fonksiyonu olarak beklentilerini yazmak ve bağımsız değişken olarak beklenen argüman uzatabilir misiniz? Önceki zamanlarda yaptığım şey bu.

private List<String> setExpectations(String expectedString) { 
    List<String> foo = createMock(List.class); 
    expect(foo.get(0)).andReturn(expectedString).once(); 
    expect(foo.size()).andReturn(1).once(); 
    replay(foo); 
    return foo; 
} 

Artı: dönüş sıfırını Dize, evet?