目前我正在使用 MockK 库(版本 1.8.1)在 Android Dev 中进行单元测试,我的问题是我无法模拟 Patterns.EMAIL_ADDRESS。
每次调用此属性时,测试用例都会抛出 NPE。
我试过mockkStatic(Patterns::class)
, 但@Before 方法在应用规则 every { Patterns.EMAIL_ADDRESS.pattern() } returns EMAIL_REGEX_STRING
时因 NPE 而崩溃.
我正在尝试测试的类(class):
public class EmailValidator {
private static final String EMPTY = "";
private final Context context;
@Inject
public EmailValidator(Context context) {
this.context = context;
}
public String isValidEmail(String email) {
if (StringUtils.isEmpty(email)) {
return context.getString(R.string.sign_up_error_email_empty);
}
if (!email.matches(Patterns.EMAIL_ADDRESS.pattern())) {
return context.getString(R.string.sign_up_error_email_validate);
}
return EMPTY;
}}
最佳答案
尝试使用PatternsCompat.EMAIL_ADDRESS.pattern()
而不仅仅是Patterns.EMAIL_ADDRESS.pattern()
这为我完成了工作。
关于android - 无法模拟 android.util.Patterns.EMAIL_ADDRESS.pattern(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51059353/