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