2016-07-25 9 views

Antwort

4

Mein Verständnis von der docs ist, dass .to und .be und verschiedene andere Stücke der Expect/Syntax sollte nur syntaktische sind Zucker, ohne echte Funktionalität.

Also .to.be.true === .true und .to.equal(true) === .equal(true). Der Unterschied liegt also zwischen .true und .equal(true) - und es gibt keinen Unterschied; .true ist nur eine syntaktische Kurzschrift für .equal(true).

1

Sie testen die gleiche Sache. Mit anderen Worten, .to.equal(true) schlägt fehl, .to.be.true wird auch fehlschlagen, und wo .to.equal(true) erfolgreich ist, tut dies auch .to.be.true.

jedoch sie unterscheiden sich in diesem .to.equal nimmt eine optionale benutzerdefinierte Fehlermeldung während .to.be.true nicht eine benutzerdefinierte Fehlermeldung nehmen.

var settings = { 
    verbose: "foo" 
}; 
settings.verbose.should.equal(true, "verbose setting"); 

wird eine Fehlermeldung wie zeigen:

AssertionError: verbose setting: expected 'foo' to equal true 

Die gleiche Sache mit expect(settings.verbose).to.equal(true, "verbose setting"). Ohne die benutzerdefinierte Fehlermeldung, wird der Fehler sein:

AssertionError: expected 'foo' to equal true 

Wenn Sie expect(settings.verbose).to.be.true("verbose setting") den Test verwenden, wird fehlschlagen, aber die benutzerdefinierte Fehlermeldung ignoriert.