Код: Выделить всё
@Testcontainers
@SpringBootTest
public class SpringContextWithMongoTest
{
@Container
static MongoDBContainer mongoDBContainer = new MongoDBContainer("mongo:6.0.20-jammy")
.withExposedPorts(27017)
.waitingFor( Wait.forListeningPort() );
@DynamicPropertySource
static void registerMongoProperties( DynamicPropertyRegistry registry ) {
mongoDBContainer.start();
registry.add("spring.data.mongodb.host", mongoDBContainer::getHost);
registry.add("spring.data.mongodb.port", mongoDBContainer::getFirstMappedPort);
}
@Test
public void contextLoads() {
}
}
Код: Выделить всё
spring.data.mongodb.username=mongo
spring.data.mongodb.password=mongo
spring.data.mongodb.database=stackoverflow
spring.data.mongodb.port=27017
spring.data.mongodb.host=localhost
Код: Выделить всё
spring.data.mongodb.username=
spring.data.mongodb.password=
< /code>
Я также попытался изменить метод динамических свойств: < /p>
@DynamicPropertySource
static void registerMongoProperties( DynamicPropertyRegistry registry ) {
mongoDBContainer.start();
registry.add("spring.data.mongodb.host", mongoDBContainer::getHost);
registry.add("spring.data.mongodb.port", mongoDBContainer::getFirstMappedPort);
registry.add("spring.data.mongodb.username", () -> null);
registry.add("spring.data.mongodb.password", () -> null);
}
< /code>
Это также не может привести тест. Я полагаю, что тест не удается, потому что мы предоставляем учетные данные, когда Монго не ожидал, что нет. #spring.data.mongodb.username=mongo
#spring.data.mongodb.password=mongo
< /code>
Я знаю, что это может показаться проблемой x-y, в том, что, возможно, я должен попытаться настроить тестовый контейнер, чтобы требовать учетных данных, но я все еще думаю, что это разумный вопрос, чтобы задать :
Как вы можете отказаться от пружинных свойств загрузки для теста?
Подробнее здесь: https://stackoverflow.com/questions/793 ... t-purposes
Мобильная версия