У меня есть следующий класс, который загружается в зависимости от профиля. Я хочу, чтобы он загружался только для помощи в более низких средах, а не на производстве:
@RestController
@RequestMapping("/foo")
@Profile("!prod")
public class FooController {
private Bar bar;
@PostMapping
public ResponseEntity<?> createFoo(){
bar.something();
return new ResponseEntity<Object>(HttpStatus.ACCEPTED);
}
}
Я хотел бы провести следующие тесты для этого класса:
@WebMvcTest
@RunWith(SpringRunner.class)
@ActiveProfiles("prod")
public class FooControllerTest {
private MockMvc mockMvc;
@Mock
private Bar bar;
@InjectMocks
private FooController subjectUnderTest;
@Before
public void init(){
mockMvc = MockMvcBuilders
.standaloneSetup(subjectUnderTest)
.build();
}
@Test
public void givenProdProfile_whenCreateFoo_thenNotFoundResponseReturned() throws Exception {
doNothing().when(mockBar).something();
mockMvc.perform(MockMvcRequestBuilders
.post("/foo"))
.andExpect(status().isNotFound());
}
, а затем еще один тестовый класс для проверки этого случая с @ActiveProfile ('non-prod'):
- GivenNonProdProfile_whenCreateFoo_thenAcceptedResponseReturned
Я не совсем понимаю, как правильно это проверить. Я перепробовал много разных подходов, и ни один из них, похоже, не тестировал класс должным образом. Я пытался аннотировать свой тестовый класс с помощью @ActiveProfile и др. c.
Я думаю, суть моего вопроса в том, как я могу тестировать различные профили с помощью Mock Mvc и Mockito?