有趣的案例。
我会做的是:
1) - 该特定回调创建一个具体类:
public class MyCallback implements Callback<Data>{
private View view;
public MyCallback(View view){
this.view = view;
}
@Override
onResponse(Data data) {
view.showData(data);
}
}
现在对于这个类,你可以写一个单元测试,这将检查是否onResponse
方法调用view
字段的showData
方法。
2)已经extacted落实到一个具体的类,从包含userPressedButton
方法的类的角度来看,它真的不是必要的回调类的里面发生了什么。 重要的是,该接口的具体实现已通过:
public void userPressedButton() {
service.loadData(new MyCallback(view));
}
最后测试:
@InjectMocks
MyClass myClass;
@Mock
Service service;
@Captor
ArgumentCaptor argCaptor;
@Before
public void init(){
MockitoAnnotations.initMocks(this);
}
@Test
public void shouldUseMyCallback(){
// Arrange
// set up myClass for test
// Act
myClass.userPressedButton();
Mockito.verify(service).loadData(argCaptor.capture());
// Assert
assertTrue(argCaptor.getValue instance of MyCallback);
}
所以我们检查loadData
方法是否调用了适当的实现。
这就是我将如何测试你的情况。
只是要确定。你想写单元测试吗?不是综合测试 –
Maciej Kowalski是的,这是正确的! – JesperQv