【发布时间】:2023-04-08 22:25:01
【问题描述】:
我有以下代码:
@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(context:Context)
在对internetProvider.hasInternet() 方法进行存根时,我得到了一个NullPointerException,因为该方法的实现使用了在构造函数中传递的context,并且正在调用真正的方法?
我在这里缺少什么?关键是要对这个方法的真正实现存根?
【问题讨论】:
-
hasInternet()函数的签名是什么?如果不是open,则调用internetProvider.hasInternert()将被执行,因为Mockito 无法存根最终方法。 -
天才,我猜应该很明显。所以需要打开存根方法......不确定我喜欢这个。请将此作为答案提交,我会接受。