gpt4 book ai didi

android - 模拟惰性构造函数参数

转载 作者:行者123 更新时间:2023-12-02 12:08:14 24 4
gpt4 key购买 nike

这是我的第一个问题,如果我做错了什么,我深表歉意。
我正在测试一个使用注入(inject)的 Lazy Dagger 构造函数参数的用例。

import dagger.Lazy

class TrackSpeed (val analyticsRepository: Lazy<AnalyticsRepository>) {

fun execute(timeMillis: Long) {
analyticsRepository.get().trackSpeed(timeMillis)
}
}

我不知道如何模拟 AnalyticsRepository,因为它很懒。
这就是我的测试类现在的样子:
class TrackSpeedTest {

private lateinit var trackSpeed: TrackSpeed
private val analyticsRepository: Lazy<AnalyticsRepository> = mock()

@Before
fun setUp() {
trackSpeed = TrackSpeed(analyticsRepository)
}

@Test
fun testTrackSpeed() {
val time: Long = 0

trackSpeed.execute(time)

verify(analyticsRepository.get(), times(1))
.trackSpeed(time)
}

没有编译错误,但是当我运行测试时它失败并出现以下异常:

java.lang.ClassCastException: io.reactivex.internal.operators.flowable.FlowableError 不能在 com.package.TrackSpeed.execute() 中转换为 com.package.AnalyticsRepository

有什么建议么?
提前致谢。

最佳答案

您可以创建一个实际的 Lazy 实例,该实例在 get() 中返回您模拟的 AnalyticsRepository:

analyticsRepository = mock<AnalyticsRepository>()
val lazy = Lazy<AnalyticsRepository> { analyticsRepository }
trackSpeed = TrackSpeed(lazy)

关于android - 模拟惰性构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52000222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com