如何在ExchangeTestSupport中使用Mockito

时间:2019-01-20 15:18:58

标签: apache-camel mockito spring-camel

我的骆驼路线如下

public class MainRouteBuilder extends RouteBuilder {

    @Autowired
    private CcsRouteCommonProperties commonProps;

    /**
     * {@inheritDoc}
     */
    @Override
    public void configure() throws Exception {

    }
}

我已经使用ExchangeTestSupport编写了如下测试

public class MainRouteBuilderTest extends ExchangeTestSupport {

    /**
     * {@inheritDoc}
     */
    @Override
    public RoutesBuilder createRouteBuilder() throws Exception {

    }

    @Test
    public void shouldProcess() throws Exception {

    }
}

我正在尝试模拟CcsRouteCommonProperties,如下所示 @嘲笑 私有CcsRouteCommonProperties commonProps;

如何使用模拟(@RunWith(MockitoJUnitRunner.class))模拟上述字段

1 个答案:

答案 0 :(得分:0)

您问题的直接答案是在@InjectMocks上使用MainRouteBuilder,然后让Mockito注入@Mock的{​​{1}}或@Spy。希望this short guide为您解释一下。

解决方案将类似于

CcsRouteCommonProperties

但是,如果我在您的位置,我会避免使用@RunWith(MockitoJUnitRunner.class) public class MainRouteBuilderTest extends ExchangeTestSupport { @Mock CcsRouteCommonProperties commonProps; @InjectMocks MainRouteBuilder routeBuilder; @Override public RoutesBuilder createRouteBuilder() throws Exception { return routeBuilder; } @Test public void shouldProcess() throws Exception { when(commonProps.getSomething()).thenReturn(new Something()); } } 魔术,并通过构造函数注入使用明确说明的依赖项。

路线生成器

@Autowired

测试

public class MainRouteBuilder extends RouteBuilder {
private CcsRouteCommonProperties commonProps;
    public MainRouteBuilder( CcsRouteCommonProperties commonProps) {
        this.commonProps =  commonProps;
    }
    /**
        * {@inheritDoc}
        */
    @Override
    public void configure() throws Exception {

    }
}