我们需要从Azure-CosmosDB - sql api中获取很少的记录以提高覆盖率,我们想要模拟,但是搜索了很多,但没有找到Java。你能在这里做向导吗?
我的DAO类如下所示
private CosmosClient client;
@Autowired
public DAO(CosmosClient client) {
this.client = client;
}
CosmosDatabase database;
CosmosContainer container;
private static final String DATABASE = "test-db";
private static final String CONTAINER = "test-container";
/**
* Test method
*/
public List<TestVO> fetchTestData() {
// create database
CosmosDatabaseResponse databaseResponse = client.createDatabaseIfNotExists(DATABASE);
database = client.getDatabase(databaseResponse.getProperties().getId());
// create container
CosmosContainerProperties containerProperties = new CosmosContainerProperties(CONTAINER, "/pkey");
CosmosContainerResponse containerResponse = database.createContainerIfNotExists(containerProperties,
throughputProperties);
container = database.getContainer(containerResponse.getProperties().getId());
// Form querySpec
Iterable<FeedResponse<Test>> feedRespIter = container
.queryItems(querySpec, queryOptions, Test.class).iterableByPage(continuationToken, pageSize);
// iterate list of documents to return shipping list
if (feedRespIter .iterator().hasNext()) {
// Some business logic
}
}在向cosmosClient注入mock或仅仅是模仿时,我会出错
Cannot mock/spy class com.azure.cosmos.CosmosClient
Mockito cannot mock/spy because
- final class
at org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener.initMocks(MockitoTestExecutionListener.java:83)
at org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener.prepareTestInstance(MockitoTestExecutionListener.java:60)发布于 2022-11-21 06:56:30
CosmosClient是最后一个类,要模拟最终类,需要使用以下步骤配置Mockito特性:
在以下路径中创建一个文件:
src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker有以下内容:
mock-maker-inline这应该允许模拟最后的类。
https://stackoverflow.com/questions/73529141
复制相似问题