2个不稳定版本
0.2.0 | 2019年7月31日 |
---|---|
0.1.0 | 2019年7月31日 |
#2293 在 数据库接口
14KB
194 行
kpostgres_fixture
这提供了两个主要功能
with_temporary_postgres
:使用docker创建一个临时的PostgreSQL实例。with_temporary_database
:在现有的PostgreSQL实例中创建一个临时的数据库。
它们都传递参数和TlsMode,以便您可以以任何您想要的方式创建连接。
这对于在隔离环境中运行测试数据库中的迁移等操作非常有用。
使用示例最佳实例直接取自我的测试
#[cfg(test)]
mod tests {
use super::*;
use std::sync::{Once, ONCE_INIT};
static INIT: Once = ONCE_INIT;
#[cfg(feature = "docker")]
#[test]
fn temp_pg() {
INIT.call_once(|| {
env_logger::init();
});
let result = with_temporary_postgres("postgres:11", |params, tls_mode, _| -> Result<()> {
with_temporary_database(params, tls_mode, |params, tls_mode| -> Result<()> {
let conn = Connection::connect(params, tls_mode)?;
conn.batch_execute("CREATE TABLE test()")?;
conn.execute("TABLE test", &[])?;
Ok(())
})?
})
.expect("Failed to create temporary database");
println!("{:#?}", result);
result.expect("Inner result failed");
}
#[test]
fn temp_db() {
INIT.call_once(|| {
env_logger::init();
});
let connect_params = ConnectParams::builder()
.port(5432)
.user("postgres", None)
.database("postgres")
.build(params::Host::Tcp("localhost".to_owned()));
let result = with_temporary_database(
connect_params,
TlsMode::None,
|params, tls_mode| -> Result<()> {
let conn = Connection::connect(params, tls_mode)?;
conn.batch_execute("CREATE TABLE test()")?;
conn.execute("TABLE test", &[])?;
Ok(())
},
)
.expect("Failed to create temporary database");
println!("{:#?}", result);
result.expect("Inner result failed");
}
}
依赖关系
~8–21MB
~334K SLoC