业余的问题,但我似乎找不到答案...
我正在使用Mockito编写单元测试,我有一个utils函数(isOnline(context)
),它在进行网络调用之前检查我是否脱机。
我并不想测试该函数,所以我想模拟该函数的结果,而不运行其中的任何代码。
我已经尝试了两种常用的方法:
given(isOnline(context)).willReturn(true)
个when(isOnline(application)).thenReturn(true)
但两者似乎都在运行isOnline
方法。
fun isOnline(context: Context): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
...
}
...我收到错误
java.lang.NullPointerException: null cannot be cast to non-null type
android.net.ConnectivityManager
at org.triggerise.base.utils.NetworkUtilsKt.isOnline(NetworkUtils.kt:14)
对于如何只模拟结果而不运行方法的内容,有什么建议吗?
1条答案
按热度按时间qlzsbp2j1#
这就是Java/Kotlin的工作方式--你实际上是在模拟那里的行为的同时调用方法,所以代码被执行。要解决这个问题,你需要使用doReturn(文档中的第12节)Mockito方法。
如果方法是静态的,则必须使用mockStatic方法(文档中的第48节)。