Вместо непосредственного использования Patterns.EMAIL_ADDRESS
вы можете создать вокруг него обертку, а затем смоделировать или подделать обертку.
Обертка может быть методом, например:
class EmailValidator {
fun isValidEmail(email: String) {
if (StringUtils.isEmpty(email)) {
return context.getString(R.string.sign_up_error_email_empty);
}
if (!email.matches(getEmailPattern())) {
return context.getString(R.string.sign_up_error_email_validate);
}
}
private fun getEmailPattern(): String = Patterns.EMAIL_ADDRESS.pattern()
}
и ваш тест может издеваться как:
@Test
fun `test email validator`() {
val validator = spyk(EmailValidator())
every { validator["getEmailPattern"]() } returns yourTestPattern
assertThat(validator.isValidEmail("blah blah blah")).isFalse()
}
Или создайте класс, который обертывает его, может быть, класс PatternFactory
class PatternFactory {
fun getEmailPattern(): String = ...
fun getVinPattern(): String = ...
}
затем передайте PatternFactory
в качестве зависимости и смоделируйте ее для теста