Some helpers to make it simpler to mock Tower services.
MockService is a generic [
tower::Service] implementation that allows intercepting
requests, responding to them individually, and checking that there are no requests to be
received (at least during a period of time). The
MockService can be built for proptests or
for normal Rust unit tests.
use zebra_test::mock_service::MockService; let mut mock_service = MockService::build().for_unit_tests(); let mut service = mock_service.clone(); let call = tokio::spawn(mock_service.clone().oneshot("hello")); mock_service .expect_request("hello").await .respond("hi!"); mock_service.expect_no_requests().await; let response = call .await .expect("Failed to run call on the background") .expect("Failed to receive response from service"); assert_eq!(response, "hi!");
- A service implementation that allows intercepting requests for checking them.
- A builder type to create a
- A helper type for responding to incoming requests.
- Represents normal Rust assertions that panic, like
- Represents [
mod@proptest] assertions that return errors, like
- The default timeout before considering a request has not been received.
- A helper trait to improve ergonomics when sending a response.