I'm pretty new to JavaScript, and I have a quick question regarding the Chai library for making unit tests.
When I was studying some materials on the Chai library, I saw a statement saying:
equal
: Asserts that the target is strictly (===
) equal to the given value.eql
: Asserts that the target is deeply equal to value.I'm confused about what the difference is between strictly and deeply.
equal() vs eql()equal() asserts that two arguments are referentially equal (ie. a === b) . eql() does a deep equality check between two arguments.
ASSERT: Fails fast, aborting the current function. EXPECT: Continues after the failure.
Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework.
The should style allows for the same chainable assertions as the expect interface, however it extends each object with a should property to start your chain. This style has some issues when used with Internet Explorer, so be aware of browser compatibility.
Strictly equal (or ===
) means that your are comparing exactly the same object to itself:
var myObj = { testProperty: 'testValue' }; var anotherReference = myObj; expect(myObj).to.equal(anotherReference); // The same object, only referenced by another variable expect(myObj).to.not.equal({testProperty: 'testValue'}); // Even though it has the same property and value, it is not exactly the same object
Deeply Equal on the other hand means that every property of the compared objects (and possible deep linked objects) have the same value. So:
var myObject = { testProperty: 'testValue', deepObj: { deepTestProperty: 'deepTestValue' } } var anotherObject = { testProperty: 'testValue', deepObj: { deepTestProperty: 'deepTestValue' } } var myOtherReference = myObject; expect(myObject).to.eql(anotherObject); // is true as all properties are the same, even the inner object (deep) one expect(myObject).to.eql(myOtherReference) // is still also true for the same reason
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With