这是我第一次与kotlin mvp Rx一起使用mockito,并且,我得到一个错误“wanted但not invoked-but,This mock正好有1个交互”
这里是我的演示者类
class MatchPresenter(private val matchContract: MatchContract,private val apiService: MatchService,private val appSchedulerProvider: AppSchedulerProvider) {
fun getLastMatch() {
apiService
.getLastMatches()
.subscribeOn(appSchedulerProvider.newThread())
.observeOn(appSchedulerProvider.ui())
.subscribe(
{ matchList ->
matchContract.onSuccess(matchList)
},
{ error ->
matchContract.onFailed(error.message)
}
)
}
fun getNextMatch() {
apiService
.getNextMatches()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ matchList ->
matchContract.onSuccess(matchList)
},
{ error ->
matchContract.onFailed(error.message)
}
)
}
这里是我的演示者视图
interface MatchContract {
fun onFailed(message: String?)
fun onSuccess(matchModel: MatchModel)
}此处是我的AppSchedulerProvider类AppSchedulerProvider:SchedulerProvider{override fun trampoline():Scheduler{TODO(“未实现”)//要更改创建函数的正文,请使用文件设置文件模板。}
override fun newThread(): Scheduler {
return Schedulers.newThread()
}
override fun ui(): Scheduler {
return AndroidSchedulers.mainThread()
}
override fun computation(): Scheduler {
return Schedulers.computation()
}
override fun io(): Scheduler {
return Schedulers.io()
}
}
这是我的会前测试
class MatchPresenterTest {
@Mock
private lateinit var view:MatchContract
@Mock
private lateinit var apiService: MatchService
@Mock
private lateinit var appSchedulerProvider: AppSchedulerProvider
private lateinit var presenter : MatchPresenter
@Before
fun setup(){
MockitoAnnotations.initMocks(this)
RxAndroidPlugins.getInstance().registerSchedulersHook(object : RxAndroidSchedulersHook() {
override fun getMainThreadScheduler(): Scheduler {
return Schedulers.immediate() // or .test()
}
})
presenter = MatchPresenter(view,apiService,appSchedulerProvider)
}
@Test
fun getLastMatch_shoul_callSucces(){
val event: MutableList<EventModel> = mutableListOf()
val response = MatchModel(event)
RxJavaHooks.setOnIOScheduler { scheduler1 -> Schedulers.immediate() }
Mockito.`when`(apiService.getLastMatches()
).thenReturn(Observable.just(response))
presenter.getLastMatch()
verify(view).onSuccess(response)
verify(view).onFailed("failed")
}
删除测试最后一行中View.onFailed的验证。除此之外,你做的一切都对。
我有一门课要考。 提供了我的测试类, 我得到了下面提供的错误堆栈, 需要但未调用:Holder.SetapIkey();->在com.ratepay.ella.service.config.EmailageServiceConfigurationTest.TestEmailageConfigholder(EmailageServiceConfigurationTest.java:48)实际上,与这
在执行以下步骤后,我得到了错误:想要但没有调用:实际上,与这个模拟没有任何交互。我不明白我在这里遗漏了什么。
更新下面是异常消息: 更新2用真实实例替换mocked WithDefinitions对象后,我得到以下输出:
当我试图通过传递强制转换的值来模拟重载的方法时,我得到了以下错误。 例如,为了模拟 我正在做 但是当我运行测试用例时,我会得到以下错误 为什么要调用,甚至在专门调用了之后? 附加详细信息 logWarn的定义
我正在寻找一个简化的算法来测试OBB和球体之间的交点。我见过一些算法,但大多数算法过于复杂,因为它们需要考虑OBB上的所有3个旋转轴。在我的例子中,OBB只在Z轴上旋转,所以我觉得标准的圆形/旋转矩形算法和球体/OBB算法之间的某种东西可能会更优化。 作为参考,OBB存储为中心的,半维的另一个,方向的-请记住,我们可以保证,当转换为欧拉旋转时,两个轴将为0,只有Z轴会改变。球体只是中心的和半径的。
我被通缉了,但没有被征召。方法在行处与此模拟错误没有任何交互。甚至我也嘲弄了这个对象&在调试函数时被调用。 下面是我要测试的函数,