Fluent Assertions Extensions
I started to get into Test Driven Development this past year seriously. I've always intended to try testing, and I have for the past 5 years, but I would try writing tests only after I've already know the code I have is working. On top of that, I couldn't get past the several dependencies every object had in the website I was working on for Smart Furniture, which was a fork of nopCommerce from roughly 2009. I recall one of the services having a constructor that took nearly 27 dependencies - try writing that manually.
As an aside, I added a dependency one day, and it was a new dependency in the middle of the constructor, not the end. I needed to update the test, but intellisense cut off before it got that far, so I had no idea which parameter to add/update in the test code without manually counting. If I made a programming horror post, it'd be about that memory.
In my travels to TDD world, I came across Fluent Assertations, and what a world of difference it has made. It's an amazing library and it helps me to express myself much better in my test code, especially when combined with several other great libraries out there. If you're not aware of Fluent Assertions, it let's you use a Fluent Interface (e.g. LINQ) to create test assertions for automated tests. For example, take this small code comparison:
Fantastic. What if I want to chain Which's together though? Right now, we'd have to restart the method chain once we Which into a property. We'll talk about that part next time.
For those who want to check it out, the source code is available here and the nuget package is available here.