我想测试我的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
所以任何人都有解决这个问题的方法吗?
答案 0 :(得分:1)
我认为您最好的选择是进行重构,以便将包含String
文本的EditText
传递给EditText
,而不是validator.checkEmail()
本身。{{1} }。验证逻辑不应该依赖于特定于Android的代码。