#matcher #fluent #assertions #expectations

rxpect

Extensible fluent expectations for Rust

2 releases

0.1.1 Oct 9, 2023
0.1.0 Oct 9, 2023

#659 in Testing

MIT/Apache

16KB
321 lines

RXpect

A Rust library for fluently building expectations in tests.

Another library for fluent assertions?

None of the other libraries worked quite like I wanted them to. I also wanted to test my ideas about how a fluent assertion library in Rust could work.

What about the name?

All other names I could come up with were already taken.

What does it mean?

Either Rust Expect or Raniz Expect, pick whichever you like best.

How do I use this thing?

It's pretty simple actually, wrap whatever you're having expectations on with expect and then call the different extension methods.

use rexpect::expect;
use rexpect::expectations::EqualityExpectations;

// Expect 1 plus 1 to equal 2
expect(1 + 1).to_equal(2);
running 1 test
test tests::that_one_plus_one_equals_two ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Failures are neatly reported:

use rexpect::expect;
use rexpect::expectations::EqualityExpectations;

// Expect 1 plus 1 to equal 3
expect(1 + 1).to_equal(3);
thread 'main' panicked at 'Expectation failed (expected == actual)
expected: `3`
  actual: `2`'

I don't like it

Use something else. Here's a bunch of other crates that also does fluent expectations, in no particular order:

No runtime deps