【问题标题】:Can not test this dataClass in kotlin with mock or without无法在 kotlin 中使用 mock 或没有测试这个 dataClass
【发布时间】:2021-10-27 07:01:39
【问题描述】:

除了cardNumber和termsAndCondition之外都成功了。这两个返回null。测试期间如何返回真值? (我没有删除一些 cmets 来显示我已经尝试过的代码。)

NewCardValidation.kt

data class NewCreditCardValidation(
    var cardNumber: MasterPassEditText? = null,
    var termsAndCondition: CompoundButton? = null,
    var cardMonth: Int? = null,
    var cardYear: Int? = null,
    var cardName: String? = null
) {
    val isValid: Boolean
        get() = when {
            cardNumber?.isEmpty == true -> false
            termsAndCondition?.isChecked == false -> false
            cardMonth == null -> false
            cardYear == null -> false
            cardName.isNullOrBlank() -> false
            else -> true
        }
}

NewCardValidationTest.kt

@RunWith(MockitoJUnitRunner::class)
class NewCreditCardValidationTest{
    private val newCardValidation = NewCreditCardValidation()
    @Test
    fun `Check cardValidation is valid`(){
        newCardValidation.cardNumber?.setText("4111111111111111")
      //  Mockito.`when`(newCardValidation.termsAndCondition?.isChecked).thenReturn(true)
        newCardValidation.termsAndCondition?.isChecked = true
       // doReturn(true).`when`(newCardValidation.termsAndCondition?.isChecked)
        newCardValidation.cardMonth = 10
        newCardValidation.cardYear = 2023
        newCardValidation.cardName = "mycard"
        Truth.assertThat(newCardValidation.isValid).isTrue()
    }
}

【问题讨论】:

    标签: android unit-testing kotlin mockito


    【解决方案1】:

    因为isValidval,所以在类实例化时创建。为函数更改它,每次都会计算它,包括对变量的更改。

    【讨论】:

    • 不,这不是问题。我可以传递所有其他值并返回结果。但是,这两个通过null。不能传真假。另外,我不想在测试时更改 antyhin。这不是最佳做法。
    • 你试过了吗?
    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 2014-02-08
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多