Mockito单元测试:EditText文本设置无效致验证器测试异常
搞定EditText测试中文本模拟的问题
嘿,我来帮你解决这个测试验证器时遇到的坑!你现在的问题根源在于mock了SpannableStringBuilder本身,而不是让EditText返回一个真实的文本实例——Mock生成的假对象只会输出哈希码,不会返回你想要的实际文本内容。
正确的实现方式
直接创建真实的SpannableStringBuilder实例就行,它是个普通类,测试里用完全没问题:
// 直接创建真实的文本实例,传入你要模拟的邮箱地址 val emailText = SpannableStringBuilder("test@gmail.com") // 让mock的EditText返回这个真实文本 `when`(emailField.text).thenReturn(emailText) // 放心调用验证器方法 validator.checkEmail(emailField)
为啥之前的写法不行?
你之前的代码把SpannableStringBuilder也mock了,这就相当于造了个“假的文本容器”,它根本不会管你传入的"test@gmail.com"是什么,默认的toString()只会输出它的对象哈希码,自然拿不到预期的文本。只有真实的SpannableStringBuilder实例才会正确返回你设置的内容。
额外小提示
如果后续需要模拟空文本、错误格式的输入,直接新建对应内容的SpannableStringBuilder实例就好,没必要再去mock这个类,简单又靠谱~
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

