chai icon indicating copy to clipboard operation
chai copied to clipboard

Better user experience when using `.include` without `.deep`.

Open koddsson opened this issue 1 year ago • 0 comments

Given the following assertion:

expect({ tags: {} }).to.include({ tags: {} });

You get the following assertion error:

AssertionError: expected { tags: {} } to have property 'tags' of {}, but got {}

For those of us that have read the guide know that I really want to do:

expect({ tags: {} }).to.deep.include({ tags: {} });

According to the guide using .deep:

Causes all .equal, .include, .members, .keys, and .property assertions that follow in the chain to use deep equality instead of strict (===) equality. See the deep-eql project page for info on the deep equality algorithm: https://github.com/chaijs/deep-eql.

This isn't obvious from the usage though. I wonder if we could improve the user experience by point the user towards .deep in the assertion error?

koddsson avatar May 16 '24 11:05 koddsson