What Im' trying to do:
- start MongoDB Container from test containers https://github.com/testcontainers/testcontainers-spring-boot/tree/develop/embedded-mongodb
- Inject MongoDB uri taken from started container into Configuration
- Run test
Here is my code:
@ExtendWith({SpringExtension.class})
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = {
"embedded.mongodb.install.enabled=true",
"spring.data.mongodb.uri=mongodb://${embedded.mongodb.host}:${embedded.mongodb.port}/${embedded.mongodb.database}"
})
@AutoConfigureMockMvc
@ImportAutoConfiguration
class UploadFileControllerTest {
@LocalServerPort
private int port;
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
private static MongoDBContainer mongoDbContainer;
@BeforeAll
public static void startContainer() {
mongoDbContainer = new MongoDBContainer();
mongoDbContainer.start();
// !!! this one should be injected into spring.data.mongodb.uri
System.out.println("mongoURL: " + mongoDbContainer.getReplicaSetUrl());
// !!!
}
@AfterAll
public static void stopContainer() {
mongoDbContainer.stop();
}
@Test
void testUploadAndParseFile() throws Exception {
var fileUploadTask = uploadFileUsingMockMvc(zipFile);
System.out.println(fileUploadTask);
}
}
I cant' find a way to populate spring.data.mongodb.uri
configuration value.