java - 模拟 swagger 自动生成的 api 类

标签 java unit-testing mockito swagger

我有一些由 Swagger 自动生成的 API 客户端,为了简单起见,我们假设我有(这些是自动生成的):

  • ApiClient <-- 这是基本客户端
  • UserApi <-- 在其构造函数中接收 ApiClient

现在我已经创建了一个ApiUtils:

public class ApiUtils {
    private UserApi userApi;

    public ApiUtils(final ApiClient apiClient) {
        userApi = new UserApi(apiClient);
    }

    // Methods here
}

我想模拟这个类,并且希望我可以将 InjectMethod 用于 UserApi。我尝试了以下方法:

public class ApiUtilsTest {
    @Mock
    private ApiClient apiClient;
    @Mock
    private UserApi userApi;

    @InjectMock
    private ApiUtils apiUtils;

    @Before
    public void setUp() {
       MockitoAnnotations.initMocks(this);
       apiUtils = new ApiUtils(apiClient);
    }

    @Test
    public void testSomething() {
       when(userApi.doSomething).thenReturn(myMock);
       apiUtils.someMethodThatUsesApiUser ...
    }
}

但是因为 UserApi 是在 Utils 类的构造函数中初始化的,所以我的模拟不会被注入(inject)。

我该如何 mock 这个?

最佳答案

我创建了一个简单的library它支持 mocking使用 Mockito 将 Swagger 生成的 stub 作为服务端点(在本地端口上)。

实现风格和代码生成设置将影响事情是否有效,但至少这是一个起点。请随意提交问题和/或 PR 以支持您的用例。

关于java - 模拟 swagger 自动生成的 api 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44834884/

相关文章:

java - 为 java spring Controller 创建单元测试时 NullPointerExecption 失败

unit-testing - 未找到 Gradle DSL 方法 : test()

java - JUnit/Mockito - 如何捕获参数字段的变化?

java - 对具有构造函数和需要使用mockito模拟的 Autowiring 字段的类的方法进行单元测试

java - 查找数组中单词之间的最小距离

unit-testing - 在不使用 IoC 容器的情况下,是否可以在 3 层或 n 层架构中测试洋葱式代码?

java - 模拟 Vertx.io 异步处理程序

java - 将数组的字符串输出到 java 中的 JTextArea

java - wso2 样本不工作

java - Spring Data JPA - 使用现有的嵌套子对象保留新对象