java - 为什么测试函数不能访问内存数据库?
问题描述
我正在为 MongoRepository 自定义函数类编写测试。
以下是我需要测试的存储库功能:
public interface DataRepository extends MongoRepository<Data, String> {
List<Data> getBySizeId(String sizeId);
List<Data> findAllBy();
List<Data> findAllBySizeId(List<String> sizeId);
}
这是测试类:
@DataMongoTest
class DataRepositoryTest {
@Autowired
private DataRepository underTest;
@Test
void create() {
//Given
String id = UUID.randomUUID().toString();
Data Data = new Data();
Data.setId(id);
//When
underTest.save(Data);
//Then
Optional<Data> optionalData = underTest.findById(id);
assertThat(optionalData)
.isPresent();
}
@Test
void delete() {
//Given
//When
//Then
}
@Test
void getBySizeId() {
//Given
String SizeId = UUID.randomUUID().toString();
Data Data1 = new Data();
Data1.setSizeId(SizeId);
Data Data2 = new Data();
Data2.setSizeId(SizeId);
Data Data3 = new Data();
Data3.setSizeId(SizeId);
List<Data> DataList = Arrays.asList(Data1, Data2, Data3);
//When
underTest.saveAll(DataList);// assume that is works correct
//Then
List<Data> dataArray = underTest.getBySizeId(SizeId);
assert(dataArray.stream().count() == 3);
}
}
如您所见,我@DataMongoTest
在 DataRepositoryTest 类上使用。
根据文档:
默认情况下,使用 @DataMongoTest 注释的测试将使用嵌入式内存中的 MongoDB 进程。
当我运行测试时,测试函数访问真实的数据库文档,而不是内存中的 MongoDB。
我的问题是知道为什么它访问真实的数据库而不是内存中的 MongoDB,因为它应该根据文档默认?
解决方案
推荐阅读
- delphi - Delphi/Firemonkey,儿童不透明度问题
- c# - c# ForEachAsync 过早退出
- python - Python pyrebase 将值更新到 Firebase
- amazon-web-services - 使用 EFK 堆栈从 kibana 上的 S3 获取 AWS 日志
- android - 建议购买室内定位系统设备组权
- c# - 比较具有相同类型的对象评估为假
- jquery - 在没有 npm 的 Visual Studio 上将引导程序和 jquery 依赖项添加到 ASP.NET Core 项目
- windows - 有没有办法在ubuntu中创建逻辑图像(.l01)
- ubuntu - 终结者在右键单击、未聚焦(在窗口外单击)等时关闭
- php - 将 Json 文件对象分配给变量