#spring #spring-boot #spring-mvc
Вопрос:
В приложении spring boot 2.5.5 в тестовом классе я пытаюсь прочитать свойство из среды. Когда я пытаюсь выполнить отладку, и контроллер переходит к TradeController…environment.getProperty(«spring.profiles.active»); возвращает значение null.
Ниже приведен класс, который я хочу протестировать
@RestController public class TradeController{ @Autowired private TradeServiceImpl tradeServiceImpl; @Autowired private Environment environment; @GetMapping("/getTrade") public ResponseEntitylt;Stringgt; getTrade(@PathVariable final String tradeId){ if(StringUtils.isNotBlank(tradeId){ String profile = environment.getProperty("spring.profiles.active"); } Listlt;Tradegt; trades = tradeServiceImpl.getAllTrades(tradeId); } }
а ниже приведен тестовый класс.
Будет ли @ActiveProfiles(«тест») в приведенном ниже тесте устанавливать spring.profiles.active=тест ?
Когда я запускаю тест , environment.getProperty(«spring.profiles.active»); в TradeController возвращает значение null. Однако переменная enviorment в TradeController выглядит следующим образом enviornment={Стандартная среда@746}»Стандартная среда{Активные профили=[тест],….}
Это прекрасно работает, когда я запускаю тест на spring boot 2.2.8-РЕЛИЗ, environment.getProperty(«spring.profiles.active»); в TradeController возвращает тест. Я в замешательстве, почему это работает с spring boot 2.2.8, а не с 2.5.5.?
Я что-нибудь упускаю?
@RunWith(SpringJUnit4ClassRunner.class) @WebMvcTest(value = TradeController.class) @ActiveProfiles("test) class TradeControllerTest{ @Autowired private MockMvc mockMvc; @MockBean private TradeServiceImpl tradeServiceImpl; @Mock private ConfigurableEnvironment enviroment; @Before public void setup(){ MockitoAnnotations.initMocks(this); } @Test public void test() throws Exception{ Mockito.doNothing().when(tradeServiceImpl).getAllTrades(any()); RequestBuilder requestBuilder = MockMvcRequestBuilder.get(new URI("/getTrades")).accept(MediaType.APPLICATION_JSON); MvcResult result = mockMvc.perform(requestBuilder).andReturn(); assertEquals(result.getResponse().getStatus(), 400); } }
My pom looks below spring dependencies .. spring boot is 2.5.5
lt;dependencygt; lt;groupIdgt;org.springframework.bootlt;/groupIdgt; lt;artifactIdgt;spring-boot-starter-webgt;lt;/artifactIdgt; lt;dependencygt; lt;dependencygt; lt;groupIdgt;org.springframework.bootlt;/groupIdgt; lt;artifactIdgt;spring-boot-starter-actuatorgt;lt;/artifactIdgt; lt;dependencygt; lt;dependencygt; lt;groupIdgt;org.springframework.bootlt;/groupIdgt; lt;artifactIdgt;spring-boot-starter-jdbcgt;lt;/artifactIdgt; lt;dependencygt; lt;dependencygt; lt;groupIdgt;org.springframework.bootlt;/groupIdgt; lt;artifactIdgt;spring-boot-starter-retrygt;lt;/artifactIdgt; lt;dependencygt; lt;dependencygt; lt;groupIdgt;org.springframework.bootlt;/groupIdgt; lt;artifactIdgt;spring-boot-starter-testgt;lt;/artifactIdgt; lt;dependencygt; lt;dependencygt; lt;groupIdgt;org.springframeworklt;/groupIdgt; lt;artifactIdgt;spring-webgt;lt;/artifactIdgt; lt;versiongt;5.3.11lt;/versiongt; lt;dependencygt;