Как создать смоделированный и немодальный экземпляр одного класса в одном тестовом методе?
Срок действия «Entry» может истечь, если его атрибут «lastContact» старше 5 минут. Я использую Mock для создания такого Entry-объекта:
@Test
public void entryOlderThanFiveMinutesIsExpired() {
new MockUp<Entry>() {
@Mock
public Date getLastContact() {
return new Date(10000L); // date in the past
}
};
Entry expiredEntry = new Entry();
assertThat(expiredEntry.isExpired(), is(true));
}
Это отлично работает.
В следующем тесте мне понадобится запись «expired» и запись «not expired» (обе будут добавлены в EntryList, и после «purge ()» должна остаться только запись «expired».
Но настройка mocks изменяет весь класс, поэтому все экземпляры этого класса будут mocked:
@Test
public void test() {
Entry unexpiredEntry = new Entry(); // this should not be mocked
new MockUp<Entry>() {
@Mock(invocations = 1)
public Date getLastContact() {
return new Date(10000L); // date in the past
}
};
Entry expiredEntry = new Entry();
assertThat(expiredEntry.isExpired(), is(true));
assertThat(unexpiredEntry.isExpired(), is(false));
}
Это не удалось. Я пробовал несколько способов настройки макетов, но не понял.
Как я могу решить эту проблему?
Спасибо