我的骆驼路线如下
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))模拟上述字段
答案 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 {
}
}