🛈 Note: This is pre-release documentation for the upcoming tracing 0.2.0 ecosystem.

For the release documentation, please see docs.rs, instead.

pub struct ExpectedField { /* private fields */ }
Expand description

An expected field.

For a detailed description and examples, see the documentation for the methods and the field module.

Implementations§

source§

impl ExpectedField

source

pub fn with_value(self, value: &dyn Value) -> Self

Sets the value to expect when matching this field.

If the recorded value for this field diffs, the expectation will fail.

§Examples
use tracing_mock::{collector, expect};

let event = expect::event()
    .with_fields(expect::field("field_name").with_value(&"value"));

let (collector, handle) = collector::mock()
    .event(event)
    .run_with_handle();

tracing::collect::with_default(collector, || {
    tracing::info!(field_name = "value");
});

handle.assert_finished();

A different value will cause the test to fail:

use tracing_mock::{collector, expect};

let event = expect::event()
    .with_fields(expect::field("field_name").with_value(&"value"));

let (collector, handle) = collector::mock()
    .event(event)
    .run_with_handle();

tracing::collect::with_default(collector, || {
    tracing::info!(field_name = "different value");
});

handle.assert_finished();
source

pub fn and(self, other: ExpectedField) -> ExpectedFields

Adds an additional ExpectedField to be matched.

Any fields introduced by .and must also match. If any fields are not present, or if the value for any field is different, then the expectation will fail.

§Examples
use tracing_mock::{collector, expect};

let event = expect::event().with_fields(
    expect::field("field")
        .with_value(&"value")
        .and(expect::field("another_field").with_value(&42)),
);

let (collector, handle) = collector::mock()
    .event(event)
    .run_with_handle();

tracing::collect::with_default(collector, || {
    tracing::info!(
        field = "value",
        another_field = 42,
    );
});

handle.assert_finished();

If the second field is not present, the test will fail:

use tracing_mock::{collector, expect};

let event = expect::event().with_fields(
    expect::field("field")
        .with_value(&"value")
        .and(expect::field("another_field").with_value(&42)),
);

let (collector, handle) = collector::mock()
    .event(event)
    .run_with_handle();

tracing::collect::with_default(collector, || {
    tracing::info!(field = "value");
});

handle.assert_finished();
source

pub fn only(self) -> ExpectedFields

Indicates that no fields other than those specified should be expected.

If additional fields are present on the recorded event or span, the expectation will fail.

§Examples

Check that only a single field is recorded.

use tracing_mock::{collector, expect};

let event = expect::event()
    .with_fields(expect::field("field").with_value(&"value").only());

let (collector, handle) = collector::mock().event(event).run_with_handle();

tracing::collect::with_default(collector, || {
    tracing::info!(field = "value");
});

handle.assert_finished();

The following example fails because a second field is recorded.

use tracing_mock::{collector, expect};

let event = expect::event()
    .with_fields(expect::field("field").with_value(&"value").only());

let (collector, handle) = collector::mock().event(event).run_with_handle();

tracing::collect::with_default(collector, || {
    tracing::info!(field = "value", another_field = 42,);
});

handle.assert_finished();

Trait Implementations§

source§

impl Debug for ExpectedField

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<ExpectedField> for ExpectedFields

source§

fn from(field: ExpectedField) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithCollector for T

source§

fn with_collector<C>(self, collector: C) -> WithDispatch<Self>
where C: Into<Dispatch>,

Attaches the provided collector to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_collector(self) -> WithDispatch<Self>

Attaches the current default collector to this type, returning a WithDispatch wrapper. Read more