【发布时间】:2021-05-13 17:41:54
【问题描述】:
我正在努力使用 TestContainers 删除保存在容器中的所有数据。 我能够从 MongoDB 测试容器创建和检索数据,但是每个测试用例都应该是自包含的,并且一个测试不应该影响另一个测试。如果我无法以某种方式“清除”我的数据库,那么在测试“A 类”之后,在执行“B 类”测试时,我的数据库中将会出现一些“脏”。
在 Spring Boot 环境中,我可以使用以下任一方法轻松处理这些情况:
@DirtyContext
或
@Autowired
MongoTemplate mongoTemplate
@BeforeEach
public void setup(){
mongoTemplate.dropCollection(ClassName.class)
}
我知道我可以在容器上执行一些命令,这是我目前所做的:
private static final MongoDBContainer mongoDBContainer = new MongoDBContainer("mongo:latest");
@SneakyThrows
@Override
public Map<String, String> start() {
mongoDBContainer.start();
return Collections.singletonMap("quarkus.mongodb.connection-string",
mongoDBContainer.getReplicaSetUrl());
}
@Override
public void stop() {
mongoDBContainer.close();
}
试图简单地执行 show dbs 并没有让我得到任何东西。
@SneakyThrows
public void show(){
mongoDBContainer.execInContainer("show dbs");
}
我能否连接到容器并手动执行db.collection.drop()?如果是,我很乐意接受一些提示和 sn-ps。 (Obs:任何执行此操作的 API 都会更好)。
【问题讨论】:
标签: mongodb quarkus testcontainers-junit5