我有一个MyClass
,其中有一个字段MyService myService
。
现在,我正在通过扩展类来测试该类。即MyClassTest extends MyClass
。
我的问题是,如何告诉Mockito模拟myService
?
谢谢
答案 0 :(得分:1)
如果无法从外部访问此字段,则有两个选项:反射和...反射。
示例1:
使用org.mockito.internal.util.reflection.FieldSetter
。
MyClass m = new MyClass();
FieldSetter.setField(m, m.getClass().getDeclaredField("myService"), yourService);
示例2: 标准Java的反映:
MyClass m = new MyClass();
Field f = m.getClass().getDeclaredField("myService");
f.setAccessible(true);
f.set(m, yourService);
答案 1 :(得分:1)
您可以如下模拟服务。
这些是您应该拥有的进口商品
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
这是测试
MyClass myClass = new MyClass();
// Mock the service
MyService myService = mock(MyService.class);
// Write the behavior of the mocked service.
when(myService.myMethod()).thenReturn(someOutputObjectThatShouldBeReturned)
// Set the mocked service to your class.
Whitebox.setInternalState(myClass, "myService", myService)