Fre*_*red 3 android mockito rx-java
在MVP模式中描绘您的演示者订阅返回观察者的服务的情况:
public void gatherData(){
service.doSomeMagic()
.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(new TheSubscriber());
}
Run Code Online (Sandbox Code Playgroud)
现在该类从视图中TheSubscriber调用onNext一个方法,例如:
@Override public void onNext(ReturnValue value) {
view.displayWhatever(value);
}
Run Code Online (Sandbox Code Playgroud)
现在,在我的单元测试中,我想验证当在gatherData()非错误情况下调用该方法时,将调用视图的方法displayWhatever(value).
问题:
有干净的方法吗?
背景:
TheSubscriber我试过了什么:
谢谢您的帮助
假设你正在使用接口,service并view以类似的方式:
class Presenter{
Service service;
View view;
Presenter(Service service){
this.service = service;
}
void bindView(View view){
this.view = view;
}
void gatherData(){
service.doSomeMagic()
.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(view::displayValue);
}
}
Run Code Online (Sandbox Code Playgroud)
然后可以提供模拟来控制和验证行为:
@Test void assert_that_displayValue_is_called(){
Service service = mock(Service.class);
View view = mock(View.class);
when(service.doSomeMagic()).thenReturn(Observable.just("myvalue"));
Presenter presenter = new Presenter(service);
presenter.bindView(view);
presenter.gatherData();
verify(view).displayValue("myvalue");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1987 次 |
| 最近记录: |