在Camel中,通过使用camel-test和Mock Endpoints,我不知道如何断言处理器或Bean的特定方法已被调用?
例如,假设我有一个带有多种方法的bean ProductService来获取产品列表或更新现有产品,以下是在路径中调用服务方法的代码:
boolean methodIsInvoked = false;
public void setMethodInvocation(){
methodIsInvoked = true;
}
when(productService.getAllProducts(any())).thenAnswer((Answer<Boolean>) invocation -> {
setMethodInvocation();
return listOfProducts;
});
template.sendBody(...)
assertTrue(methodIsInvoked)
如何断言已调用productService的getAllProducts方法?
我当前的方法是使用thenAnswer调用一个设置标志的方法,以注意该方法已被调用。但我想知道这不是一个好方法:
ls . `
| select @{ Name="Dir"; Expression = { $_ | Split-Path } } `
| select -ExpandProperty Dir
答案 0 :(得分:2)
当使用像mockito这样的模拟框架时,您可以在Spring测试环境中模拟ProductService:
@Bean
public ProductService mockedProductService() {
return Mockito.mock(ProductService.class);
}
在你的测试类中断言你预期的调用量如下:
verify(mockedProductService, times(1)).getAllProducts();