Expect, Should & Assert in Chai: Which Should I use?

Someone reached out recently asking me this, and I figure I'd share my response publicly for anyone interested. These are all my opinions, so take them with a grain of salt.

The one you use really depends on your preferences. I usually go with 'expect', because I like the format of the statements:

It reads very sentence like. Another benefit is that it matches pretty closely to Jest's assertion format, which can be helpful if your team uses Jest.

The drawback is that it can be difficult to put together the syntax, especially starting out. That's were using something like assert would do better. The functions/assertion combinations are all documented for you to use (this is a benefit of Jest's format as well).

I do like the idea behind the should format, but have shied away from it due to a known edge case in some issues that can trip people up.