gpt4 book ai didi

java - Camel 单元测试 - 我们如何编写单元测试来断言 bean 的特定方法被调用?

转载 作者:行者123 更新时间:2023-11-30 02:20:27 26 4
gpt4 key购买 nike

在Camel中,通过使用camel-test和Mock Endpoints,我不知道如何断言处理器或Bean的特定方法已被调用?

例如,假设我有一个 ProductService Bean,它具有多种方法来获取产品列表或更新现有产品,以下是在路由中调用服务方法的代码:

from(endpoint)
.bean(productService, "getAllProducts")

如何断言 ProductService 的 getAllProducts 方法已被调用?

我当前的方法是使用 thenAnswer 调用一个方法,该方法设置一个标志以表明该方法已被调用。但我想知道这不是一个好方法:

boolean methodIsInvoked = false;

public void setMethodInvocation(){
methodIsInvoked = true;
}

when(productService.getAllProducts(any())).thenAnswer((Answer<Boolean>) invocation -> {
setMethodInvocation();
return listOfProducts;
});

template.sendBody(...)

assertTrue(methodIsInvoked)

最佳答案

当使用像mockito这样的模拟框架时,您可以在Spring测试上下文中模拟ProductService:

@Bean
public ProductService mockedProductService() {
return Mockito.mock(ProductService.class);
}

并在您的测试类中断言您预期的调用量,如下所示:

verify(mockedProductService, times(1)).getAllProducts();

关于java - Camel 单元测试 - 我们如何编写单元测试来断言 bean 的特定方法被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47010750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com