es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El Mapper de MapStruct siempre es nulo en las pruebas unitarias.

Intenté diferentes enfoques que encontré aquí en Stackoverflow. Esta es la forma en que sé cómo usar un mapper con MapStruct.

Tengo una clase Mapper así:

“`@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface DummyMapper {
DummyMapper INSTANCE = Mappers.getMapper(DummyMapper.class);
DummyResponseApi modelToApi(DummyResponse DummyResponseModel);
}

<pre><code>Y mi prueba de unidad:

“`@RunWith(SpringRunner.class)
@SpringBootTest(classes = {DummyMapper.class})
class ServiceClassTest {
private DummyService service;
}

Mi método de servicio que quiero probar:

public DummyModelApi getSomething() {
DummyModel mapMe = new DummyModel();
return DummyMapper.INSTANCE.modelToApi(mapMe);
}

En proyectos anteriores lo hice de la misma manera y no tuve problemas. Ahora lo estoy usando en un nuevo proyecto con Spring Boot 2.5.6 y MapStruct 1.5.0.Beta1.

Con el uso de @SpringBootTest, por lo que sé, Spring está iniciando la aplicación y debería crear la clase Mapper, ¡así que no entiendo por qué el Mapper siempre es nulo!

Cuando elimino DummyMapper.class en @SpringBootTest, aparece un error con “No se pudo cargar el contexto de la aplicación”. Eso me muestra que se reconoce el mapper.

Otra cosa que me parece extraña es que debo usar “unmappedTargetPolicy = ReportingPolicy.IGNORE” en mi mapper, de lo contrario, obtengo el mensaje de error “No se pudieron encontrar propiedades sin asignar” o algo así, aunque definitivamente existe la propiedad con el mismo nombre en ambos modelos. Esto nunca fue un problema en proyectos anteriores, no sé por qué MapStruct está haciendo cosas extrañas ahora.

Tags:  , , , ,

Answer

Comments are closed.