pub struct IntegrationTest<H: Handler + 'static> { /* private fields */ }Expand description
Context for integration tests that manages fixtures and test client.
Provides a structured way to run multi-step integration tests with automatic fixture management and test isolation.
§Example
ⓘ
use fastapi_core::testing::{IntegrationTest, TestFixture};
use std::sync::Arc;
// Define a fixture (e.g., for database state)
struct TestData {
user_id: i64,
}
impl TestFixture for TestData {
fn setup() -> Self {
// Create test data
TestData { user_id: 1 }
}
fn teardown(&mut self) {
// Clean up test data
}
}
#[test]
fn test_user_api() {
let app = Arc::new(App::builder()
.route("/users/{id}", Method::Get, get_user)
.build());
IntegrationTest::new("User API Test", app)
.with_fixture::<TestData>()
.run(|ctx| {
// Access fixture
let data = ctx.fixture::<TestData>().unwrap();
// Make requests through the full app stack
let response = ctx.get(&format!("/users/{}", data.user_id)).send();
assert_eq!(response.status().as_u16(), 200);
});
}Implementations§
Source§impl<H: Handler + 'static> IntegrationTest<H>
impl<H: Handler + 'static> IntegrationTest<H>
Sourcepub fn new(name: impl Into<String>, handler: H) -> Self
pub fn new(name: impl Into<String>, handler: H) -> Self
Creates a new integration test context.
Sourcepub fn with_seed(name: impl Into<String>, handler: H, seed: u64) -> Self
pub fn with_seed(name: impl Into<String>, handler: H, seed: u64) -> Self
Creates a new integration test with a specific seed for determinism.
Sourcepub fn with_fixture<F: TestFixture + 'static>(self) -> Self
pub fn with_fixture<F: TestFixture + 'static>(self) -> Self
Registers a fixture type for this test.
The fixture will be set up before the test runs and torn down after.
Sourcepub fn on_reset<F: Fn() + Send + Sync + 'static>(self, f: F) -> Self
pub fn on_reset<F: Fn() + Send + Sync + 'static>(self, f: F) -> Self
Registers a state reset hook to run after the test.
Useful for clearing caches, resetting global state, etc.
Auto Trait Implementations§
impl<H> Freeze for IntegrationTest<H>
impl<H> !RefUnwindSafe for IntegrationTest<H>
impl<H> Send for IntegrationTest<H>
impl<H> !Sync for IntegrationTest<H>
impl<H> Unpin for IntegrationTest<H>
impl<H> !UnwindSafe for IntegrationTest<H>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Instruments this future with a span (no-op when disabled).
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
Instruments this future with the current span (no-op when disabled).