gpt4 book ai didi

spring - Testcontainers mongodb - 尚未提供集群描述。超时前等待 30000 毫秒

转载 作者:行者123 更新时间:2023-12-02 18:00:41 25 4
gpt4 key购买 nike

我有基本 Spring存储库:

@Repository
public interface LRepository extends MongoRepository<L, String> {}

我在服务中使用它:
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SerImpl {
private final LRepository repository;

public String saveL(L l) {
l = repository.save(l);
return l.id;
}
}

在线咨询 .save(l)我的测试超时。
@SpringBootTest
@ExtendWith(SpringExtension.class)
@Testcontainers
@ContextConfiguration(initializers = {MongoIntegrationTest.TestPropertiesInitializer.class})
class MongoIntegrationTest {
private SerImpl serImpl;

@Autowired
private LRepository lRepository;

public static class TestPropertiesInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
final TestPropertyValues values = TestPropertyValues.of(
"spring.data.mongodb.host=localhost",
"spring.data.mongodb.username=root",
"spring.data.mongodb.password=example",
"spring.data.mongodb.authentication-database=admin",
"spring.data.mongodb.database=l",
"spring.data.mongodb.uri=mongodb://root:example@localhost:27017"
);
values.applyTo(configurableApplicationContext);
}
}

@Container
public GenericContainer mongoDb = new GenericContainer("mongo:4.2.2")
.withExposedPorts(27017)
.withEnv("MONGO_INITDB_ROOT_USERNAME", "root")
.withEnv("MONGO_INITDB_ROOT_PASSWORD", "example");

@BeforeEach
public void setUp() {
mongoDb.start();

String address = mongoDb.getContainerIpAddress();
//List<Integer> exposedPorts = mongoDb.getExposedPorts();
Integer port = mongoDb.getFirstMappedPort();
Map<String,String> map = mongoDb.getEnvMap();
serImpl = new SerImpl(lRepository);
}

@Test
public void testSimplePutAndGet() {
String id = serImpl.saveL(new L("aaa"));
assertNotNull(id);
}
}

在线 l = repository.save(l);
我收到一条错误消息

org.mongodb.driver.cluster     : Cluster description not yet available. Waiting for 30000 ms before timing out.


我试图通过增加超时来修复它:
@Configuration
public class MongoConfiguration {
@Bean
public MongoClientOptions mongoOptions() {
return MongoClientOptions
.builder()
.serverSelectionTimeout(180000)
.build();
}
}

但是更多的时间在这里对我没有帮助。 LString 的对象 field 。
我简化了上面的代码以使其更多 职业教育证书。
当测试运行时,我看到容器正在运行并暴露端口。

如果我从 docker 启动 mongo 容器,则测试成功。

我在 Windows 上运行它。

最佳答案

我已经添加:

    mongoDb.setPortBindings(List.of("27017:27017"));

这个修复这个问题:

org.mongodb.driver.cluster : Cluster description not yet available. Waiting for 30000 ms before timing out.

关于spring - Testcontainers mongodb - 尚未提供集群描述。超时前等待 30000 毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59879113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com