Was ich mache, wenn ich mich so etwas wie die hier gestellte Frage frage, ist, zur Quelle zu gehen.
sein()
expect().toBe()
ist definiert als:
function toBe() {
return {
compare: function(actual, expected) {
return {
pass: actual === expected
};
}
};
}
Es führt seinen Test durch, ===
was bedeutet, dass es bei Verwendung als expect(foo).toBe(true)
nur bestanden wird, wenn es foo
tatsächlich den Wert hat true
. Wahrheitswerte bestehen den Test nicht.
toBeTruthy ()
expect().toBeTruthy()
ist definiert als:
function toBeTruthy() {
return {
compare: function(actual) {
return {
pass: !!actual
};
}
};
}
Typ Zwang
Ein Wert ist wahr, wenn der Zwang dieses Wertes zu einem Booleschen Wert den Wert ergibt true
. Die Operation !!
prüft die Richtigkeit, indem der expect
an einen Booleschen Wert übergebene Wert erzwungen wird . Beachten Sie, dass im Gegensatz zu dem, was die derzeit akzeptierte Antwort impliziert , == true
ist nicht für Truthiness eine richtige Prüfung. Sie werden lustige Dinge wie bekommen
> "hello" == true
false
> "" == true
false
> [] == true
false
> [1, 2, 3] == true
false
Bei Verwendung von !!
Erträgen:
> !!"hello"
true
> !!""
false
> !![1, 2, 3]
true
> !![]
true
(Ja, leer oder nicht, ein Array ist wahr.)
toBeTrue ()
expect().toBeTrue()
ist Teil von Jasmine-Matchers (das auf npm registriert ist, wie jasmine-expect
nach einem späteren Projekt, das jasmine-matchers
zuerst registriert wurde ).
expect().toBeTrue()
ist definiert als:
function toBeTrue(actual) {
return actual === true ||
is(actual, 'Boolean') &&
actual.valueOf();
}
Der Unterschied zu expect().toBeTrue()
und expect().toBe(true)
besteht darin, dass expect().toBeTrue()
geprüft wird, ob es sich um ein Boolean
Objekt handelt. expect(new Boolean(true)).toBe(true)
würde scheitern, während expect(new Boolean(true)).toBeTrue()
passieren würde. Das liegt an dieser lustigen Sache:
> new Boolean(true) === true
false
> new Boolean(true) === false
false
Zumindest ist es wahr:
> !!new Boolean(true)
true
Welches ist am besten für die Verwendung geeignet elem.isDisplayed()
?
Letztendlich übergibt der Winkelmesser diese Anfrage an Selen. Die Dokumentation besagt, dass der von erzeugte Wert .isDisplayed()
ein Versprechen ist, das sich in a auflöst boolean
. Ich würde es zum Nennwert nehmen und .toBeTrue()
oder verwenden .toBe(true)
. Wenn ich einen Fall finden würde, in dem die Implementierung Wahrheits- / Falschwerte zurückgibt, würde ich einen Fehlerbericht einreichen.
.toBe(true)
==.toBeTrue()
. toBeTruthy () kann nicht nur wahr sein , sondern auch 123 , "dfgdfg", [1,2,3] usw. sind im Grundeif(x==true)
wahr, währendif(x===true)
wahr wahr sind.