Как я могу переопределить компонент CDI в Quarkus для тестирования? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть bean-компонент CDI, например:

@Dependent
class Parser {

  String[] parse(String expression) {
     return expression.split("::");
  }
}

Он вводится в другой bean-компонент следующим образом:

@ApplicationScoped
class ParserService {

  @Inject
  Parser parser;

  //...
}

Что я хочу сделать, так это продолжать использовать Parserв моем обычном коде, но я хочу использовать «макет» для целей тестирования.Как мне этого добиться?

1 Ответ

1 голос
/ 13 мая 2019

Все, что нужно сделать в этом случае, это создать bean-компонент в тестовом каталоге, который будет выглядеть примерно так:

@Alternative
@Priority(1)
@Singleton
class MockParser extends Parser {

    String[] parse(String expression) {
        // some other implementation
    }
}

Здесь @Alternative и @Priority - аннотации CDI, которые Quarkus будет использовать для определения того, что MockParser будет использоваться вместо Parser (только для тестов, конечно).

Более подробную информацию можно найти в руководстве по расширению .

.

Примечание : использование @Alternarive и @Priority, конечно, не ограничивается только тестовым кодом. Их можно использовать в любой ситуации, в которой используется «переопределение» bean-компонента.

...