Я знаю, что каждый метод, который ничего не делает, не должен тестироваться (или даже не существовать).Дело в том, что мой метод делает что-то нормально, но для тестового сценария я должен издеваться над тем, что он делает.Но я все же хотел бы утверждать параметры, которые он будет отправлять внешнему объекту.
Звучит сложнее, чем он есть - проверьте мой фрагмент для лучшего понимания:
class A {
@Inject
private Mailer mailer; // Custom mailer class
public void doSomething() {
Date date = new Date(); // dynamic parameter I do not care about in the test
String parameter = "test"; // The parameter I want to test later
mailer.sendMail(parameter, date);
}
}
class ATest {
@Mock
@Produces
private Mailer mailer;
@Inject
private A classToTest;
@Test
public void testDoSomething() throws Exception {
classToTest.doSomething();
assertThat(??).isEqualTo("test"); //How can I get the value of parameter?
}
}
Как вы можетевидите, мне нужно издеваться над своим почтовым ящиком, чтобы я не отправлял электронное письмо при каждом запуске теста.
Нет смысла повышать parameter
до глобальной переменной.
Есть лиспособ проверить значение parameter
без изменения кода A
?А если нет, то что будет лучшим решением, не испортив мой класс только для тестирования?