【发布时间】:2021-10-22 07:33:45
【问题描述】:
我是单元测试的新手。我正在一个项目中使用 kotlin 进行单元测试。我应该测试WelcomeFragment。我只是尝试使用 Mockito 库并尝试模拟这个类。失败并出现错误
Mockito 无法模拟此类:
如果我使用 PhoneHelper.isValid 方法而不进行模拟,则会出错
Koin 尚未开始。
这个类使用PhoneHelper class如何在我的测试中成功测试PhoneHelper的.isValid方法?
WelcomeFragment.kt
private fun checkEditText() {
drawableChanges(
PhoneHelper.isValid(
mBinding.inputLogin.lifEdittext.text.toString(),
mViewModel.mFormState.countryCode
)
)
}
PhoneHelper.kt
import io.michaelrocks.libphonenumber.android.PhoneNumberUtil
import io.michaelrocks.libphonenumber.android.Phonenumber
import org.koin.core.KoinComponent
import org.koin.core.inject
object PhoneHelper : KoinComponent {
private val mPhoneNumberUtil: PhoneNumberUtil by inject()
fun isValid(gsmNo: String?, countryCode: String?): Boolean {
val phoneModel = Phonenumber.PhoneNumber()
phoneModel.nationalNumber = gsmNo?.toLongOrNull() ?: 0
phoneModel.countryCode = if (countryCode?.contains("+")==true) countryCode?.removePrefix("+").toString()
.toIntOrNull() ?: 90
else 90
return mPhoneNumberUtil.isValidNumber(phoneModel)
}
}
WelcomeFragmentTest.kt
class WelcomeFragmentTest{
val phonehelper = Mockito.mock(PhoneHelper::class.java)
@Test
fun `checkEditText Test`(){
val phoneNo= "558887888"
val bool = phonehelper.isValid(phoneNo,null)
assertEquals(
"false",
bool
)
}
【问题讨论】:
-
我做了,但我会再次检查。谢谢。
标签: android unit-testing kotlin mockito koin