2016-04-22 3 views
7

Ich bin ziemlich neu in Javascript, und ich habe eine kurze Frage in Bezug auf die Chai-Bibliothek für die Herstellung von Komponententests.Was ist der Unterschied zwischen gleich und eql in Chai Bibliothek

Als ich einige Materialien in der Chai-Bibliothek studierte, sah ich eine Aussage, die gleich "bestätigt, dass das Ziel genau gleich (===) ist zu value" und eql "bestätigt, dass das Ziel tief dem Wert entspricht. ".

Aber ich bin verwirrt darüber, was der Unterschied zwischen streng und tief ist.

+0

Mögliches Duplikat [? Was ist der Unterschied zwischen gleich ?, eql ?, === und ==] (http://stackoverflow.com/questions/7156955/whats-the-difference- zwischen-gleich-eql-und) – 8protons

Antwort

9

genau gleich (oder ===) bedeutet, dass Ihr vergleichen genau das gleiche Objekt selbst:

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 

Tief Equal auf der anderen Seite bedeutet, dass jede Eigenschaft der verglichenen Objekte (und mögliche tief verknüpfte Objekte) haben denselben Wert. Also:

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 
Verwandte Themen