logo

Module zebra_test::mock_service[][src]

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

A service implementation that allows intercepting requests for checking them.

A builder type to create a MockService.

A helper type for responding to incoming requests.

Enums

Represents normal Rust assertions that panic, like assert_eq.

Represents [proptest] assertions that return errors, like prop_assert_eq.

Constants

The default timeout before considering a request has not been received.

The default size of the channel that forwards received requests.

Traits

A representation of an assertion type.

A helper trait to improve ergonomics when sending a response.

Type Definitions

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