我目前正在尝试创建一个简单的集成测试,例如尝试注册端点。来自许多其他后端语言,我习惯于在每次测试后回滚数据库。
如何使用 sqlx 执行此操作?有什么方法可以通过某种测试事务启动 sqlx 吗?
我在这方面找不到任何东西。
#[actix_rt::test]
async fn signup_test() {
let params = SignupRequest {
login: "bruce8@wayne.com".into(),
password: "testtest123".into(),
};
let app_state = AppState::init().await;
let mut app = test::init_service(
App::new()
.app_data(web::Data::new(app_state.clone()))
.configure(configure),
)
.await;
let req = test::TestRequest::post() //
.insert_header(("content-type", "application/json"))
.set_json(params)
.uri("/auth")
.to_request();
let resp = test::call_service(&mut app, req).await;
log::info!("----> {}", resp.status());
assert!(resp.status().is_success());
}