Пружинный модульный тест для компонента на основе зависимостей - PullRequest
0 голосов
/ 20 февраля 2020

Предположим, у меня есть ClassA с bean-компонентом, не основанным на инъекции, у которого есть метод процесса. Я хочу сделать для него модульное тестирование, но если не использовать @InjectMock CalssA & @Mock dependencyService и я вызываю метод процесса напрямую, компонент зависимости будет иметь значение null.

как мы вручную вводим такие не на основе конструктора в модульном тесте?


public class classA extends BaseClass {

    @Autowired
    private DependencyService dependencyService;
...
    @Autowired
    public ClassA(ConfigBeanFactory configBeanFactory) {
        super(configBeanFactory);
    }

    @Override
    public void process( String input ) {
            …
            ReturnObject someObj  = Optional.ofNullable( dependencyService.someMethod( input ).orElseThrow( () -> new Exception( "xxx" ) );
            ...
    }
}



@Configuration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:test-applicationContext.xml"})
public class ClassATest {

    @Before
    public void setUpBase() throws Exception {
        ...
    }

    @Test
    public void testProcess() throws Exception {

        ConfigBeanFactory configBeanFactory = AppContext.getApplicationContext().getBean( ConfigBeanFactory.class );
        ClassA classA = new ClassA(configBeanFactory);
        classA.process("someInputs");  <--- the dependencyService will be null, how we inject such dependency in this unit test?
    }

...