Package giis.demo.descuento.ut
Class TestDescuentoWebController
java.lang.Object
giis.demo.descuento.ut.TestDescuentoWebController
@SpringBootTest
@TestPropertySource(locations="classpath:application-test.properties")
@AutoConfigureMockMvc
public class TestDescuentoWebController
extends Object
Ilustra la configuracion para pruebas unitarias de un controlador web utilizando mocks para el resto del sistema.
Es similar a TestDescuentoRestService, con los siguientes cambios:
- Como utiliza solo el controlador (el servicio que accede a esta se implementa con un mock), SpringBootTest no precisa en este caso indicar la clase que definira el contexto de la aplicacion
- Como no se usara la base de datos no hace falta indicar TestPropertySource
Este ejemplo ilustra solamente la forma de interactuar con el controlador de forma aislada. Estas pruebas para el controlador se realizaran normalmente si el controlador incluye una logica compleja que no sera probada cuando se realicen pruebas integrando el interfaz de usuario, de lo contrario se estaria probando lo mismo dos veces.
- Como utiliza solo el controlador (el servicio que accede a esta se implementa con un mock), SpringBootTest no precisa en este caso indicar la clase que definira el contexto de la aplicacion
- Como no se usara la base de datos no hace falta indicar TestPropertySource
Este ejemplo ilustra solamente la forma de interactuar con el controlador de forma aislada. Estas pruebas para el controlador se realizaran normalmente si el controlador incluye una logica compleja que no sera probada cuando se realicen pruebas integrando el interfaz de usuario, de lo contrario se estaria probando lo mismo dos veces.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ClienteService
private org.springframework.test.web.servlet.MockMvc
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
setUp()
Configura el mock en el setup: En este ejemplo el mock devolvera los datos de ClienteService (id,descuento) simulando el comportamiento con una base de datos con dos filas (1,18,'S','N','N'), (2,38,'S','S','N') para dos situaciones a cubrir:
(1) acceso sin indicar edad (debera mostrar todas las filas con los descuentos 15, 20 respectivamente)
(2) acceso indicando edad 19 (debera mostrar solo la segunda fila con descuento 20)void
Situación (1): Get para obtener la pagina inicial, no se especifica edad, devolvera dos filas (de acuerdo con el mock).void
Situacion (2): Post indicando edad 19, devolvera una fila (de acuerdo con el mock) Ilustra el paso de parametros hacia el controlador y diferntes formas de comprobar los valores que devuelve el este:
- "command" es el campo donde el usuario introduce la edad (en este caso, 19)
- "descuento" contiene la lista de descuentos (id,descuento) que devuelve el controlador
Ademas de usar matchers, ilustra como se determinan los objetos que el controlador envia a la vista para hacer comparaciones, y la obtencion del contenido completo html de la respuesta
-
Field Details
-
mvc
@Autowired private org.springframework.test.web.servlet.MockMvc mvc -
cliente
-
-
Constructor Details
-
TestDescuentoWebController
public TestDescuentoWebController()
-
-
Method Details
-
setUp
public void setUp()Configura el mock en el setup: En este ejemplo el mock devolvera los datos de ClienteService (id,descuento) simulando el comportamiento con una base de datos con dos filas (1,18,'S','N','N'), (2,38,'S','S','N') para dos situaciones a cubrir:
(1) acceso sin indicar edad (debera mostrar todas las filas con los descuentos 15, 20 respectivamente)
(2) acceso indicando edad 19 (debera mostrar solo la segunda fila con descuento 20) -
testGetRequest
Situación (1): Get para obtener la pagina inicial, no se especifica edad, devolvera dos filas (de acuerdo con el mock). Ilustra la forma habitual de comprobar los valores que devuelve el controlador utilizando matchers para:
- "command" contiene el campo donde el usuario introduce la edad (es nulo al ser un get)
- "descuento" contiene la lista de descuentos (id,descuento) que devuelve el controlador- Throws:
Exception
-
testPostRequest
Situacion (2): Post indicando edad 19, devolvera una fila (de acuerdo con el mock) Ilustra el paso de parametros hacia el controlador y diferntes formas de comprobar los valores que devuelve el este:
- "command" es el campo donde el usuario introduce la edad (en este caso, 19)
- "descuento" contiene la lista de descuentos (id,descuento) que devuelve el controlador
Ademas de usar matchers, ilustra como se determinan los objetos que el controlador envia a la vista para hacer comparaciones, y la obtencion del contenido completo html de la respuesta- Throws:
Exception
-