Как смоделировать / назначить переменную LocalDate в модульном тесте в Java - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть переменная LocalDate, которая заполняется из свойств конфигурации. Мне нужно сделать тестирование по методу, который использует эту переменную. Но это выдает ошибку LocalDate cannot be mocked. Я просматривал различные статьи в Stack Overflow и других веб-сайтах, но везде говорится о DateTimeProviders, который нельзя использовать, потому что я поддерживаю существующий проект для клиента. Теперь проблема в том, что мне нужно знать, как я могу назначить макет переменной endDate внутри класса из теста

Мой класс

public class MyClass implements MyClassService{

    @Value("#{T(java.time.LocalDate).parse('${configuration.entityconfig.end_date}')}")
    private LocalDate endDate;

    @Autowired
    public WpLateDepartureObligationServiceImpl(....){
         //some things
    }    

    public void createApplications(MyEntitity myEntity) {

    if (myEntity.getExpiryDate.isBefore(endDate)){
         return;
    }

}

Здесь выглядит область UnitTest как

  @InjectMocks
     private MyClass myClassService;

     @Test
     public void createApplicationTest() {
        MyEntitity myEntity=new MyEntitity ();
        myEntity.setId(1L);
        myEntity.setExpiryDate(LocalDate.parse("2020-04-05"));    

        myClassService.createApplications(myEntity);
     }

Я действительно потерян, как отправить значение. Я пытался насмехаться над ним, но это не работает. Есть ли способ, которым я могу отправить endDate из метода createApplicationTest?

1 Ответ

0 голосов
/ 06 апреля 2020

Я исправил эту проблему с помощью

 ReflectionTestUtils.setField(myClassService,endDate,LocalDate.Now());

Несмотря на то, что я не смог импортировать данные из конфигурации, это послужило моей цели отправке значения в переменную из test класса.

...