Weld 3 + junit 5, преобразователь ресурсов согласно свойствам системы

Я использую weld 3 + junit 5 для тестирования модуля и интеграции, вот пример:

@EnableWeld
public class CartServiceTest {

    @WeldSetup
    public WeldInitiator weld = WeldInitiator
            .from(
                    CartService.class,
                    CartDAO.class,
                    MockResources.class
            )
            .build();

    @DisplayName("remove cart")
    @Test
    void remove_cart(CartService cartService) {

        final String id = "C-55-0000015995";            

        Assertions.assertDoesNotThrow(() -> cartService.delete(id));
    }
}

MockResources - это класс, который разрешает все реализации

@ApplicationScoped
public class MockResources {

private EntityManager entityManager;

@PostConstruct
public void init() {
    entityManager = Persistence.createEntityManagerFactory("db-test").createEntityManager();
}

@Produces
public Logger produceLog(InjectionPoint injectionPoint) {
    return LoggerFactory.getLogger(injectionPoint.getMember().getDeclaringClass().getName());
}


@Default
@Produces
public EntityManager getEntityManager() {
    return entityManager;
}

...

Теперь я хочу, чтобы реализации ресурсов системных свойств разрешались по-разному, например, передавая -Denv=LO, можно было бы подключиться к базе данных h2, тогда как передача TS вместо этого подключилась бы к реальной БД.

Я предполагаю создать фабрику, которая разрешает интерфейс MockResource для класса реализации среды для всех выделенных ресурсов, но как?

0 ответов

Другие вопросы по тегам