Creating readable tests with Shouldly
In Chapter 6, we saw how the Assert
class is used to verify the behavior of existing classes through code such as the following:
Assert.Equal(35, passengerCount);
This code verifies that passengerCount
is equal to 35
and fails the test if it is a different number.
Unfortunately, this code has two problems:
- Assert methods take in the expected value first and the actual value second. This is different than how most people think about things and can lead to confusing test failure messages, as we saw in Chapter 6.
- The code doesn’t read incredibly well in English, which can slow you down as you are reading tests.
Several open-source libraries address this issue by providing an alternative syntax for writing assertions in unit tests through sets of extension methods they introduce.
The most popular of these libraries are FluentAssertions and Shouldly. While FluentAssertions is by far the more popular library, I find...