У меня есть преобразователь A, который использует преобразователи B и C.
Я хочу имитировать A в своем тесте Spring Boot, чтобы контролировать его поведение. .
Вот мой картограф и тестовая установка:
Код: Выделить всё
@Mapper(
componentModel = "spring",
uses = { B.class, C.class }
)
public interface A {
@Mapping(target = "dateField", dateFormat = "yyyy-MM-dd")
Entity toEntity(Dto dto);
@Mapping(target = "dateField", dateFormat = "yyyy-MM-dd")
Dto toDto(Entity entity);
}
Сопоставители B и C не имеют зависимостей.
Код: Выделить всё
@SpringBootTest
public class UserServiceImplTest {
@Autowired
private UserServiceImpl userService;
@MockBean
private A aMapper;
@MockBean
private B bMapper;
@MockBean
private C cMapper;
@BeforeEach
void setup() {
MockitoAnnotations.openMocks(this);
// Test setup
}
// Test methods
}
java.lang.IllegalStateException: не удалось загрузить ApplicationContext
Вызвано: org.springframework.dao.InvalidDataAccessApiUsageException: сущность не должна быть нулевой
в org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371)
// ... (усечено для краткости)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
// ... (усечено для краткости)Как правильно имитировать сопоставитель MapStruct с зависимостями в тесте Spring Boot?
Я попробовал имитировать A и его зависимости B и C с помощью @MockBean. Я ожидал, что контекст Spring загрузится успешно и позволит мне контролировать поведение A в моих тестах. Однако контекст не загружается из-за проблем с зависимостями сопоставителя A.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ct-mappers