gpt4 book ai didi

android - 使用 Mockito Kotlin 模拟对象而不是 Stubbing 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:42 24 4
gpt4 key购买 nike

我有以下代码:

@RunWith(MockitoJUnitRunner::class)
class OnboardingViewModelTest {

@Mock lateinit var authService : AuthService
lateinit var internetProvider: InternetStatusProvider
private lateinit var viewModel: OnboardingViewModel

@Before
fun setup() {
internetProvider = mock()
whenever(internetProvider.hasInternet()).thenReturn(true)
}

InternetStatusProvider 的构造函数如下所示:

InternetStatusProvider(上下文:上下文)

在对 internetProvider.hasInternet() 方法进行 stub 时,我得到了一个 NullPointerException,因为该方法的实现使用了在构造函数中传递的 context 并且真正的方法被调用了吗?

我在这里错过了什么?重点是 stub 这个方法的真正实现?

最佳答案

Mockito 不能 stub final方法。如果您尝试从模拟实例执行 final 方法,则将执行真实代码。由于 Kotlin 的函数默认为 final,因此您必须向函数添加 open 修饰符。

还有一个 incubating feature在 Mockito 中,确实允许模拟最终类和方法,这可能值得一看。

关于android - 使用 Mockito Kotlin 模拟对象而不是 Stubbing 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056191/

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