Disposable Docker Compose environments for MoonBit tests
///|
async test "GET /health" {
let compose = @testdock.DockerCompose(config="compose.yml")
defer compose.down() // Remove containers, networks and volumes after the test.
compose.up(timeout=60_000) // Wait for running/healthy services; milliseconds.
let api = compose.service("api")
let port = api.get_host_port_ipv4("3000").unwrap()
let endpoint = @url.Url::parse("http://localhost/health")
endpoint.set_hostname(api.get_host())
endpoint.set_port(port)
let (_, body) = @http.get(endpoint.href())
json_inspect(body.text(), content="ok")
}moon test example/appmoon test --target nativetype Containertype DockerComposefn DockerCompose::DockerCompose(config~ : String, env? : String, client? : Client, force_build? : Bool) -> DockerCompose