【发布时间】: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