I thought I’d try a FluentAssertions - a different way of doing asserts in Unit Tests.
As the name of the library suggests, your assertion code is fluent. i.e. methods are chained.
Some examples.
A simple assert:
person.YearOfBirth.Should().Be(1945);
To check a list has the correct number of elements:
personList.Should().HaveCount(10);
To ensure that a list has elements in a certain order:
IEnumerable<int> positions = personList.Select(x => x.Rank);
positions.Should().ContainInOrder(new[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
There are lots of helper methods and the lots of examples in the on-line documentation.
I quite like it and have been using it on a project.
And it’s not just the assertion style that I like.
The thing that really impressed me was when one of my tests failed. In my assert I was comparing two strings. I clearly should have done a .Trim() on my string under test, but I forgot. And here is the error I saw in my test runner window:
Expected string to be "John Smith", but it has unexpected whitespace at the end.
How useful is that! No more “the string differs at position 45″.