无法在kotlin中使用mock或不使用mock测试此数据类



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

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()
}
}

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

最新更新