我想测试我的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
所以有人有解决这个问题的方法吗?
我认为你最好的选择是重构,以便你传递一个包含EditText
文本的String
,而不是EditText
本身来validator.checkEmail()
。验证逻辑不应该真正依赖于特定于 Android 的代码。