簡體   English   中英

如何在 Kotlin 中對 Koin 組件類進行單元測試?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM