MockitoJunitRunner может смоделировать класс Spring @Configuration, но все поля пусты - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть класс конфигурации, подобный следующему:

@Configuration
@ComponentScan(basePackages = "com.**.**") // production code, can't write package name
@EnableCaching
@PropertySource(value = { "classpath:application.properties", "classpath:version.txt"})
@EnableScheduling
public class AppConfig {

    @Value("${builtProfile}")
    @Nonnull
    private String activeProfile;

    ...
}

И это тестовый класс:

@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(classes = {AppConfig.class, MvcConfiguration.class})
@ActiveProfiles("test")
public class NativeLoginServiceImplTest {

   @InjectMocks
   private NativeLoginServiceImpl nativeLoginServiceImpl;

   @Mock
   private AppConfig mAppConfiguration;

}

mAppConfiguration создается во время теста, но проблема всеего поля нулевые.Что не так с моей настройкой теста и как я могу сделать правильную настройку, чтобы Mockito мог автоматически получить эти значения в файле application.properties для меня?

1 Ответ

0 голосов
/ 29 ноября 2018

Я предполагаю, что для ваших полей у вас есть как минимум методы получения.Вы должны использовать when и thenReturn методы, чтобы заставить насмехаться.Как это:

@Test
public void someTestMethod(){

    Mockito.when(mAppConfiguration.getActiveProfile()).thenReturn("some value");

    /** actual test goes here**/
}
...