我有一些由 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/