无法模拟android.util.Patterns.EMAIL_ADDRESS.pattern()

Vla*_*ari 2 android junit4 mockk

目前,我正在使用MockK库(版本1.8.1)在Android Dev中进行单元测试,而我的问题是我无法模拟Patterns.EMAIL_ADDRESS。每次调用此属性时,测试用例都会抛出NPE。

我尝试过mockkStatic(Patterns::class),但是@Before方法在应用规则时因NPE而崩溃every { Patterns.EMAIL_ADDRESS.pattern() } returns EMAIL_REGEX_STRING

我要测试的课程:

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;
}}
Run Code Online (Sandbox Code Playgroud)

Man*_*lva 5

尝试使用

PatternsCompat.EMAIL_ADDRESS.pattern()

而不只是

Patterns.EMAIL_ADDRESS.pattern()

那为我做了工作。