Mockito EditText在单元测试

时间:2018-05-08 08:16:34

标签: android unit-testing android-edittext mockito

我想测试我的validator,并且它有很多接受EditText作为参数的方法。问题是我无法在这里正确设置EditText文本值

val emailTxt = mock(SpannableStringBuilder("test@gmail.com")::class.java)
`when`(emailField.text).thenReturn(emailTxt)

validator.checkEmail(emailField)

但这是我得到的价值

mock for spannablestringbuilder, hashcode: 2069466373

而不是test@gmail.com

我尝试过的其他事情是

`when`(emailField.getText()).thenReturn(Editable.Factory.getInstance().newEditable("test@gmail.com"))

然而我得到了这个java.lang.RuntimeException: Method getInstance in android.text.Editable$Factory not mocked所以任何人都有解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:1)

我认为您最好的选择是进行重构,以便将包含String文本的EditText传递给EditText,而不是validator.checkEmail()本身。{{1} }。验证逻辑不应该依赖于特定于Android的代码。