Tem alguma configuração que eu possa fazer na classe de teste para subir o contexto do "controller" para então eu poder testar usando o Assured?
Tem alguma configuração que eu possa fazer na classe de teste para subir o contexto do "controller" para então eu poder testar usando o Assured?
Dê uma olhada no spring-boot-starter-test
.
A documentação está em: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html
Dá pra testar uma aplicação sem precisar iniciá-la por fora:
O ideal é usar uma porta randômica. Você tem que indicá-la por RestAssured com o método .port(port)
ou comRestAssured.port = port;
.
Mas ou menos assim:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UsuariosWSTest {
@LocalServerPort
int port;
private Usuario esperado1;
private Usuario esperado2;
@Before
public void setup() {
esperado1 = new Usuario(1L, "Mauricio Aniche", "mauricio.aniche@caelum.com.br");
esperado2 = new Usuario(2L, "Guilherme Silveira", "guilherme.silveira@caelum.com.br");
}
@Test
public void deveRetornarListaDeUsuarios() {
XmlPath path = given().port(port).header("accept", "application/xml").get("/usuarios?_format=xml").andReturn().xmlPath();
List<Usuario> usuarios = path.getList("list.usuario", Usuario.class);
assertEquals(esperado1, usuarios.get(0));
assertEquals(esperado2, usuarios.get(1));
}
}
Muito obrigado pela ajuda Alexandre!!! vlw mesmo