34 releases (10 breaking)
0.14.0-beta.1 |
|
---|---|
0.11.4 | Nov 12, 2024 |
0.11.3 | Oct 17, 2024 |
0.9.0 | Jul 30, 2024 |
0.1.0-beta.1 | Jun 28, 2023 |
#22 in Testing
71,117 downloads per month
Used in 44 crates
(41 directly)
270KB
5K
SLoC
testcontainers-modules
Community maintained modules for testcontainers
Provides modules to use for testing components in accordance with testcontainers-rs. Every module is treated as a feature inside this crate.
Usage
- Depend on testcontainers-modules with necessary features (e.g
postgres
,minio
and etc)- Enable
blocking
feature if you want to use modules within synchronous tests (feature-gate forSyncRunner
)
- Enable
- Then start using the modules inside your tests with either
AsyncRunner
orSyncRunner
Simple example of using postgres
module with SyncRunner
(blocking
and postgres
features enabled):
use testcontainers_modules::{postgres, testcontainers::runners::SyncRunner};
#[test]
fn test_with_postgres() {
let container = postgres::Postgres::default().start().unwrap();
let host_ip = container.get_host().unwrap();
let host_port = container.get_host_port_ipv4(5432).unwrap();
}
Note: you don't need to explicitly depend on testcontainers
as it's re-exported dependency
of testcontainers-modules
with aligned version between these crates.
For example:
use testcontainers_modules::testcontainers::ImageExt;
You can also see examples for more details.
How to override module defaults (version, tag, ENV-variables)
Just use RunnableImage:
use testcontainers_modules::{
redis::Redis,
testcontainers::{ContainerRequest, ImageExt}
};
/// Create a Redis module with `6.2-alpine` tag and custom password
fn create_redis() -> ContainerRequest<Redis> {
Redis::default()
.with_tag("6.2-alpine")
.with_env_var("REDIS_PASSWORD", "my_secret_password")
}
License
- MIT license (LICENSE or http://opensource.org/licenses/MIT)
Dependencies
~23–40MB
~746K SLoC