Nasıl farklı bir şey dönmek için Mockito sahte bir nesne denir söyle, bir dahaki sefere?
Yani, ben oluşturma bir alay nesnesi olarak bir statik değişken sınıf düzeyi gibi yani... bir test istiyorum Foo.someMethod()
dönmek belli bir değer, süre içinde yeni bir sınav istiyorum dönmek farklı bir değer. Yaşıyorum sorun dalga geçiyor bu doğru işe almak için yeniden inşa etmem gerekiyor gibi görünüyor. Bu alay yeniden önlemek, ve sadece her test aynı nesneleri kullanmak istiyorum.
class TestClass {
private static Foo mockFoo;
@BeforeClass
public static void setUp() {
mockFoo = mock(Foo.class);
}
@Test
public void test1() {
when(mockFoo.someMethod()).thenReturn(0);
TestObject testObj = new TestObject(mockFoo);
testObj.bar(); // calls mockFoo.someMethod(), receiving 0 as the value
}
@Test
public void test2() {
when(mockFoo.someMethod()).thenReturn(1);
TestObject testObj = new TestObject(mockFoo);
testObj.bar(); // calls mockFoo.someMethod(), STILL receiving 0 as the value, instead of expected 1.
}
}
İkinci testte, hala testObj zaman değeri 0 olarak alıyorum.() bar denilen... bunu çözmek için en iyi yolu Nedir? Not Bu benim işime farklı bir alay Foo
Her bir test, ancak, ben zinciri isteklerle kapalı mockFoo
, anlam istiyorum yapmalısın zincirleme her test.
CEVAP
Ayrıca 7 ** (1.8.5 apı#10). Bu durumda, birden fazla kullanırsınızThenReturntablolar.
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Before;
import org.junit.Test;
public class TestClass {
private Foo mockFoo;
@Before
public void setup() {
setupFoo();
}
@Test
public void testFoo() {
TestObject testObj = new TestObject(mockFoo);
assertEquals(0, testObj.bar());
assertEquals(1, testObj.bar());
assertEquals(-1, testObj.bar());
assertEquals(-1, testObj.bar());
}
private void setupFoo() {
mockFoo = mock(Foo.class);
when(mockFoo.someMethod())
.thenReturn(0)
.thenReturn(1)
.thenReturn(-1); //any subsequent call will return -1
}
}
Yöntem bir nesne yöntemi içinde oluştu...
Nasıl PHPUnit sahte bir nesne ikinci b...
Nasıl Krom XML yerine JSON dönmek için...
Nasıl verimli bir şekilde anahtarları/...
Nasıl bir Niyet kullanarak bir Android...