模拟招摇自动生成的api类

时间:2017-06-29 20:58:00

标签: 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类的构造函数中初始化,所以我没有注入我的模拟。

我怎么嘲笑这个?

1 个答案:

答案 0 :(得分:1)

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

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