Giriş
Metodumuzun içinde yaratılan bir nesne varsa, yaratılan nesneyi mock'lamak için kullanılır. Açıklaması şöyle.
Elimizde şöyle bir kod olsun. Metodun içinde yaratılan OtherObject nesnesini mock'lamak isteeyelim. Yani test içinde Foo sınıfının doWork() metodu yeni bir OtherObject nesnesi değil benim mockladığım nesneyi kullanılır.
Foo nesnemizin getWriter() bir metodu çağrılınca mock nesne dönmek için sadece Mockito kullanıyorsak şöyle yaparız.
Metodumuzun içinde yaratılan bir nesne varsa, yaratılan nesneyi mock'lamak için kullanılır. Açıklaması şöyle.
whenever the no-arg constructor of that class is invoked, a mock instance should be returned rather than a real oneÖrnek
Elimizde şöyle bir kod olsun. Metodun içinde yaratılan OtherObject nesnesini mock'lamak isteeyelim. Yani test içinde Foo sınıfının doWork() metodu yeni bir OtherObject nesnesi değil benim mockladığım nesneyi kullanılır.
class Foo {
public String doWork(){
OtherObject obj=new OtherObject();
return obj.work();
}
}
Şöyle yaparız.@Test
public void testDoWork() throws Exception{
Foo foo = new Foo();
OtherObj obj = new OtherObj();
obj.test="mocked Test"; //here you can add any other needed values to obj
PowerMockito.whenNew(OtherObj.class).withNoArguments().thenReturn(obj);
String result = foo.doWork();
Assert.assertTrue(result.equalsIgnoreCase("mocked Test"));
}
ÖrnekFoo nesnemizin getWriter() bir metodu çağrılınca mock nesne dönmek için sadece Mockito kullanıyorsak şöyle yaparız.
PrintWriter mockWriter = Mockito.mock(PrintWriter.class);
Foo mockA = Mockito.mock(Foo.class);
Mockito.when(mockA.getWriter()).thenReturn(mockWriter);
PowerMockito ile şöyle yaparız.Foo mockObject = Mockito.mock(Foo.class);
PowerMockito.whenNew(Foo.class).withNoArguments().thenReturn(mockObject);
Hiç yorum yok:
Yorum Gönder