[英]How to make Unit Test for Koin Component class in Kotlin?
我是單元測試的新手。 我正在一個項目中使用 kotlin 進行單元測試。 我應該測試WelcomeFragment
。 我只是嘗試使用 Mockito 庫並嘗試模擬這個類。 那失敗了
Mockito 不能模擬這個類:
如果我在沒有模擬的情況下使用 PhoneHelper.isValid 方法,則會出現錯誤
Koin還沒有開始。
此類使用PhoneHelper class
如何在我的測試中成功測試PhoneHelper 的.isValid 方法?
歡迎片段.kt
private fun checkEditText() {
drawableChanges(
PhoneHelper.isValid(
mBinding.inputLogin.lifEdittext.text.toString(),
mViewModel.mFormState.countryCode
)
)
}
電話助手.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)
}
}
歡迎片段測試.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 UI 測試解決了,所以它啟動了 Android 設備模擬器,然后啟動了 koin 庫。
@RunWith(AndroidJUnit4::class)
class WelcomeFragmentAndroidTest {
val phoneHelper = PhoneHelper
private lateinit var scenario: FragmentScenario<WelcomeFragment>
@Test
fun checkEditTextTest(){
val phoneNo = "5555555"
val resultPhoneHelper = phoneHelper.isValid(phoneNo,null)
Assert.assertEquals(false, resultPhoneHelper)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.