如何解决如何在Android中模拟用例
我正在尝试模拟一个用例,但是我对此并不陌生,所以不确定如何做。
我当时认为用例应该返回FLOrderCompleteResponse,所以我尝试对其进行模拟,但绝对不正确
@PerApp
class FLlingCompleteUseCase @Inject constructor(
private val FLOrderRepository: FLOrderRepository
) : UseCase() {
private lateinit var FLOrderId: String
private var fetchFLOrderInResponse: Boolean? = null
private lateinit var body: FLOrderWrapper
fun execute(
FLOrderId: String,fetchFLOrderInResponse: Boolean,body: FLOrderWrapper,subscriber: Subscriber<FLOrderCompleteResponse>
) {
this.FLOrderId = FLOrderId
this.fetchFLOrderInResponse = fetchFLOrderInResponse
this.body = body
super.execute(subscriber)
}
override fun buildUseCaseObservable() =
FLOrderRepository.FLlingComplete(FLOrderId,fetchFLOrderInResponse,body)
}
测试用例
private fun mockFLlingComplete(success: Boolean): FLlingCompleteMocks {
return FLlingCompleteMocks(
ACTMeasurement = mock(),equipment = listOf(mock()),flags = arrayListOf(mock()),ticketNumber = "1234"
).apply {
order = mock<FLOrder>().also {
every(it.ACTMeasurement).thenReturn(ACTMeasurement)
every(it.equipment).thenReturn(equipment)
every(it.flags).thenReturn(flags)
every(it.ticketNumber).thenReturn(ticketNumber)
}
response = mock<FLOrderCompleteResponse>().also {
every(it.success).thenReturn(success)
every(it.FLOrder).thenReturn(order)
}
every(FLlingCompleteUseCase.execute(any(),eq(true),any(),any()))
.thenReturn(response) // THIS LINE IS WRONG AS IT REQUIRES A UNIT
}
}
data class FLlingCompleteMocks(
val ACTMeasurement: ACTMeasurement,val equipment: List<Equipment>,val flags: ArrayList<Flag>,val ticketNumber: String
) {
lateinit var order: FLOrder
lateinit var response: FLOrderCompleteResponse
}
PRSENTER层
FLlingCompleteUseCase.execute(
order.id,true,FLOrderWrapper(order),object : Subscriber<FLOrderCompleteResponse>() {
override fun onNext(response: FLOrderCompleteResponse) {
if (response.success) {
onSuccess.invoke()
//DO SOMETHING
view?.legacyUpdateView()
}
override fun onCompleted() {}
override fun onError(e: Throwable) {
FLlingCompleteError(logTimed,e.message,currentStatus)
view?.legacyUpdateView()
}
}
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。