Как написать Junit для инъекции конструктора бобов

#java #spring-boot #junit #spring-test

Вопрос:

Я создал своего рода шаблон обработчика, который дает мне конкретные типы обработчиков на основе входного параметра. Автопроводка находится на уровне конструктора, который заполняет контейнер(хэш-карту) соответствующими компонентами стратегии. Вот код. Как я могу утверждать это с помощью Junit?

 NOTE: Strategy is an interface and those are used by impl class. @Component public class StrategyHandler {   private Maplt;String, Strategygt; responses;    @Autowired  public StrategyHandler(Setlt;Strategygt; responseSet) {  responses = new HashMaplt;gt;();  responseSet.forEach(strategy -gt; responses.put(strategy.getName(), strategy));  }      public Strategy getStrategy(String name) {  return responses.get(name);  } }  

Комментарии:

1. Что вы хотите проверить? Внедрение зависимости или дополнительной логики в ваш конструктор?

Ответ №1:

Исправлена ошибка. Вот код:

 RunWith(MockitoJUnitRunner.class) public class StrategyHandlerTest {    private Setlt;Strategygt; responses = new HashSetlt;gt;();    @InjectMocks  @Spy  private TestClass testThis;   private StrategyHandler handler;    @Before  public void init() {  MockitoAnnotations.initMocks(this);  }    @Test  public void testGetStrategy() {  responses.add(testThis);  handler = new StrategyHandler(responses);  Strategy strategy = handler.getStrategy("HELLO1");  Assert.assertNotNull(strategy);  } }  class TestClassPlanningKnockout extends PlanningKnockout {}  

Комментарии:

1. Мы могли бы помочь вам и предоставить вам ответ раньше, если бы вы ответили на вопрос, который я добавил.