| Crates.io | expecting |
| lib.rs | expecting |
| version | 0.6.0 |
| created_at | 2022-12-07 22:17:23.839547+00 |
| updated_at | 2024-05-02 17:43:34.605197+00 |
| description | Rust macros that test conditions without panicking |
| homepage | https://github.com/arcanyx-pub/expecting-rs |
| repository | https://github.com/arcanyx-pub/expecting-rs |
| max_upload_size | |
| id | 732188 |
| size | 56,147 |
Expecting provides macros for testing conditions without panicking. The
expect_* family of macros cause an early return of anyhow::Error if the
expected condition is not met.
| Macro | Description |
|---|---|
expect!(condition) |
Expects condition to be true |
expect_eq!(a, b) |
Expects a == b |
expect_ne!(a, b) |
Expects a != b |
expect_some(option) |
Expects option to be Some(x) and returns x |
expect_some_eq(some_a, a) |
Expects some_a == Some(a) |
expect_none(option) |
Expects option to be None |
expect_ok(result) |
Expects result to be Ok(x) and returns x |
expect_err(result) |
Expects result to be Err(e) and returns e |
expect_contains(string, substr) |
Expects string to contain substr |
expect_contains(container, element) |
Expects container (e.g., Vec) to contain element |
expect_empty(container) |
Expects container to have no elements. |
expect_empty(string) |
Expects string to have a length of zero. |
expect_not_empty(container) |
Expects container to have 1+ elements. |
expect_not_empty(string) |
Expects string to have non-zero length. |
This crate is especially helpful in async integration tests that involve
provisioning and tearing down resources; rather than struggle to catch panics,
you can simply use expect_* instead of assert_* to return Result.
use expecting::expect_eq;
#[test]
fn passing_test() -> Result<()> {
expect_eq!(1, 1);
Ok(())
}
#[test]
fn failing_test() -> Result<()> {
expect_eq!(1, 2); // returns early
Ok(()) // won't be reached
}
The error message for a failed test includes the line number and detailed description of what went wrong.


See the docs for usage examples and more info.