Module mock_service

Source
Expand description

Some helpers to make it simpler to mock Tower services.

A 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.

§Example

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!");

Structs§

MockService
A service implementation that allows intercepting requests for checking them.
MockServiceBuilder
A builder type to create a MockService.
ResponseSender
A helper type for responding to incoming requests.

Enums§

PanicAssertion
Represents normal Rust assertions that panic, like assert_eq.
PropTestAssertion
Represents [mod@proptest] assertions that return errors, like prop_assert_eq.

Constants§

DEFAULT_MAX_REQUEST_DELAY
The default timeout before considering a request has not been received.
DEFAULT_PROXY_CHANNEL_SIZE 🔒
The default size of the channel that forwards received requests.

Traits§

AssertionType 🔒
A representation of an assertion type.
ResponseResult
A helper trait to improve ergonomics when sending a response.

Type Aliases§

ProxyItem 🔒
An internal type representing the item that’s sent in the [broadcast] channel.