我想測驗方法checkTextLength()的DesignInputField回返布林值。但是每次都回傳false。嘗試模擬庫來做到這一點。當我寫這段代碼的Mockito.時候(designInputField.checkTextLength()).thenReturn(true)它回傳true。但我認為這不是測驗這段代碼的正確方法。
設計輸入欄位.kt
class DesignInputField @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
private var textLength = 1;
private var textLengthType = 1;
}
fun checkTextLength(): Boolean {
return when (textLengthType) {
0 -> text.length < textLength
1 -> text.length > textLength
2 -> text.length <= textLength
3 -> text.length >= textLength
4 -> text.length == textLength
else -> false
}
}
DesignInputFieldTest.kt
@RunWith(MockitoJUnitRunner::class)
class DesignInputFieldTest{
@Mock
lateinit var designInputField: DesignInputField
@Test
fun `cardNameGreaterThanOne`() {
Mockito.`when`(designInputField.text).thenReturn("ab")
Assert.assertEquals(true,designInputField.checkTextLength())
}
uj5u.com熱心網友回復:
問題是你在嘲笑designInputField,所以它的所有功能都被嘲笑,包括checkTextLength.
您可以求助于儀器測驗,但是,就您而言,我建議將 for 的邏輯提取checkTextLength到輔助頂級函式中并對其進行測驗。例如:
fun checkTextLength(type: Int, text: String): Boolean {
return when (type) {
0 -> text.length < textLength
1 -> text.length > textLength
2 -> text.length <= textLength
3 -> text.length >= textLength
4 -> text.length == textLength
else -> false
}
}
然后,DesignInputField您可以呼叫它:
fun checkTextLength() = checkTextLength(textLengthType, text)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361079.html
