Estoy tratando de descansar mis clases de descanso en Spring MVC
Si ejecuto el siguiente código (funcionó bien cuando el proyecto era pequeño pero ahora falla) intenta cargar todos los diferentes componentes en mi aplicación. Esto incluye beans que interactúan con sistemas externos y necesitan credenciales para conectarse
@RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc public class TestDummyRest extends BaseRestTestCase{ @Autowired private MockMvc mockMvc; @MockBean private IDummyServices mockDummyServices; @Test public void getSendGoodMessage() throws Exception { given(mockDummyServices.sendGoodMessage(Mockito.anyString())).willReturn(true); mockMvc.perform(get("/dummy")) .andExpect(status().isOk()) .andExpect(content().contentType(TEXT_PLAIN_CONTENT_TYPE)); verify(mockDummyServices, times(1)).sendGoodMessage(Mockito.anyString()); } }
¿Cómo le digo a mis clases de prueba que no carguen las clases @Configuration o @Component de mi aplicación?
En lugar de no crear otras clases en su aplicación, solo puede crear las clases que le interesen; consulte 15.6.1 Pruebas del lado del servidor: opciones de configuración
El segundo es simplemente crear una instancia de controlador manualmente sin cargar la configuración de Spring. En su lugar, la configuración predeterminada básica, más o menos comparable a la de MVC JavaConfig o el espacio de nombres de MVC, se crea automáticamente y se puede personalizar hasta cierto punto:
public class MyWebTests { private MockMvc mockMvc; @Before public void setup() { this.mockMvc = MockMvcBuilders.standaloneSetup(new AccountController()).build(); } // ... }