>
使用改型的API类
class interface TestApi { @GET("/path/abc/xyz") fun get(): Single }
UseCase类
null
fun getResult(): Single { return testApi.get() .map{ response -> val type = response.type when(type){ null -> throw Exception() else -> response } } .retryWhen{ throwableHandler -> throwableHandler.flatMap { when(it) { is Exception() -> Flowable.error(it) else -> Flowable.timer(3,TimeUnit.SECONDS) } } } .timeout(60, TimeUnit.SECONDS) }
null
MainClass.kt
usecase.getResult() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeBy(onError = {Log.d(TAG,"Error")}, onSuccess = {Log.d(TAG,"Next")})
应用程序运行时:
如果api返回NULL,将调用retryWhen(),然后再次调用api。达到事件not超时,并且api返回not NUL结果->onSuccess被调用。这是RXJava中对retryWhen()运算符的正确处理。
我的问题:
如果我在mainclass.kt中编写一些测试方法(假装API改造),如下所示:
private fun testPretend(): Single<Animal> {
return Single.just(Animal)
}
mainclass.kt看起来像:
testPretend()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeBy(onError = {Log.d(TAG,"Error")},
onSuccess = {Log.d(TAG,"Next")})
因此调用事件retryWhen时,不会再次调用testPretend()方法。这里的问题是什么?
以及testPrerend()的单次返回和改型API之间的区别是什么?
不会再次调用testpretend()
方法,因为它返回的可观察值是要重新订阅的值。如果希望在重新订阅时再次调用该方法,则需要执行如下操作:
Single.defer( () => testPretend() )
...
.retryWhen( ... )
...;
这将在重新订阅时调用testpretend()
。
我是写测试和使用Mockito的新手。我在Stackoverflow上阅读了类似的主题,并做了建议的更改,确保所考虑的类/接口/方法是开放的。 我试图跟踪这个 模仿构造函数注入的依赖项 这是我目前想出来的测试 但我一直得到的回应是 即使我在测试中没有提到这种方法,我也得到了这种反应。这是我的演示者注册方法。我已经改变了类/接口 同样地 这里是接口 感谢您的帮助。
我在使用JSF2.0时遇到了问题。命令按钮不调用bean,我已经阅读了balusc应答commandbutton/commandlink/ajax action/listener方法未调用或输入值未更新,但我认为我不会遇到这些情况,这就是我使用的代码: 更新1:
重试时间:io.reactivex.subjects.serializedsubject@35fb3008 subscribeNext 进程已完成,退出代码为0
我有一个JSF页面,其中有一个具有ajax=true的p:命令按钮,并在单击时呈现一个包装在p: outputGroup中的p:面板。当单击此按钮时,action方法将在ManagedBean中将show CreateUser值设置为true,这用于呈现面板。这工作正常——单击按钮后面板会正确呈现。在p:面板内还有另一个p:命令按钮。这个命令按钮不起作用,因为当我单击它时什么都不会发生。永远不会调
公共类主{ } 第一天开始学习java。我面对一堵墙。我不知道为什么
问题内容: 我有一个非常简单的Servlet和一个非常简单的HttpSessionListener: 我的方法从未被调用(没有日志输出),最终我在调用getSession()的那一行上得到一个 我尝试拨打电话时也没有问题,但存在相同的问题。 我不明白- 注释不足以调用我的侦听器吗?Eclipse甚至在下方将其显示为侦听器。 问题答案: 原来这是愚蠢的Eclipse问题之一… Project-> C