Mockito对象与Mockito Kotlin不沾方法
我有以下代码:
@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)
由于该方法的实现使用在构造函数context
传递的context
并调用真正的方法,因此在为internetProvider.hasInternet()
方法存根时存在NullPointerException
异常?
我在这里错过了什么? 整个问题的关键是要把这个方法真正的实现吗?
Mockito不能残缺最后的方法。 如果您尝试从模拟实例执行最后的方法,那么将会执行真实的代码。 由于Kotlin的函数默认是final
的,所以你必须在函数中添加open
修饰符。
在Mockito中也有一个孵化功能 , 它允许嘲笑最终的类和方法,这可能值得一看。