一键导入
integration-testing
Guías para pruebas de interacción de módulos y flujos completos con Spring Boot Test.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Guías para pruebas de interacción de módulos y flujos completos con Spring Boot Test.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Standardized testing stack for Sysacad Next Backend using JUnit 5, Mockito, and Spring Boot Test.
Mandatory rule requiring a corresponding test file for every business logic file.
Guidelines for unit and integration testing in the Sysacad Next BackEnd.
Catalog of all specialized skills used across the Sysacad Next project (Frontend & Backend).
A tool for creating new skills following the Sysacad Next standard.
Regla de oro que prohíbe terminantemente el uso del subagente del navegador (browser subagent).
| name | integration-testing |
| description | Guías para pruebas de interacción de módulos y flujos completos con Spring Boot Test. |
Las pruebas de integración validan que los componentes del sistema (Controladores, Servicios, Repositorios, Base de Datos) trabajen juntos correctamente. A diferencia de los tests unitarios, aquí probamos el contexto real de la aplicación.
@SpringBootTest: Levanta el contexto de aplicación completo. Se usa para flujos E2E internos (de Controller a DB).MockMvc: Herramienta principal para simular peticiones HTTP sin desplegar un servidor real.@AutoConfigureMockMvc: Anotación necesaria para inyectar el cliente MockMvc.@MockBean: Se utiliza para mockear únicamente servicios externos (ej. EmailService) y así no depender de redes externas.@Transactional: CRÍTICO. Asegura que cada test se ejecute en una transacción que hace rollback al terminar, manteniendo la DB limpia.Un test de integración debe validar la comunicación real entre todas las capas del backend. NO se deben usar Mocks para Controller, Service o Repository:
@SpringBootTest
@AutoConfigureMockMvc
@Transactional
class InscripcionIntegrationTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private InscripcionRepository inscripcionRepository; // Inyección real
@Test
void deberiaInscribirAlumnoACarrera() throws Exception {
// 1. Preparar DTO de entrada
String request = "{ \"estudianteLegajo\": \"55555\", \"carreraId\": \"...\" }";
// 2. Ejecutar petición al Controller -> Service -> Repository
mockMvc.perform(post("/api/admin/matriculacion")
.contentType(MediaType.APPLICATION_JSON)
.content(request))
.andExpect(status().isCreated());
// 3. VERIFICAR CAPA DE DATOS: Confirmar que el repositorio realmente guardó la entidad
boolean existe = inscripcionRepository.existsByEstudianteLegajo("55555");
assertTrue(existe, "El alumno debería estar matriculado en la DB");
}
}
@MockBean para interfaces externas al backend (ej. EmailService, StorageService). Todo lo que sea parte del dominio (modelo/, service/, repository/) debe ser real.@Transactional, cada test comienza con la base de datos en un estado conocido y deshace sus cambios al finalizar.@WithMockUser o inyectando tokens JWT válidos) en la petición.