有趣的案例。
我會做的是:
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