android– 验证rxjava订阅者中的交互

android– 验证rxjava订阅者中的交互,第1张

概述在MVP模式中描绘您的演示者订阅返回观察者的服务的情况:publicvoidgatherData(){service.doSomeMagic().observeOn(Schedulers.io()).subscribeOn(AndroidSchedulers.mainThread()).subscribe(newTheSubscriber());}现在,TheSubscriber类从视图中

在MVP模式中描绘您的演示者订阅返回观察者的服务的情况:

public voID gatherData(){   service.doSomeMagic()      .observeOn(Schedulers.io())      .subscribeOn(AndroIDSchedulers.mainThread())      .subscribe(new TheSubscriber());}

现在,TheSubscriber类从视图中调用onNext方法,说:

@OverrIDe public voID onNext(ReturnValue value) {  vIEw.displayWhatever(value);}

现在,在我的单元测试中,我想验证当在非错误情况下调用方法gatherData()时,调用视图的方法displayWhatever(value).

问题:

有干净的方法吗?

背景:

>我正在使用mockito验证交互,当然还有更多
>除了TheSubscriber之外,Dagger正在注射整个演示者

我试过了什么:

>注入订阅者并在测试中模拟它.看起来有点脏,因为如果我想改变演示者与服务交互的方式(说不是Rx),那么我需要改变很多测试和代码.
>模拟整个服务.这不是那么糟糕,但要求我嘲笑很多方法而且我没有完全达到我想要的.
>在互联网上查看,但没有人似乎有一个干净的直接方式这样做

谢谢您的帮助

解决方法:

假设您以类似的方式使用接口进行服务和查看:

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);  }}

然后可以提供模拟来控制和验证行为:

@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");}
总结

以上是内存溢出为你收集整理的android – 验证rxjava订阅者中的交互全部内容,希望文章能够帮你解决android – 验证rxjava订阅者中的交互所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1114979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存