Lo que hago cuando me pregunto algo como la pregunta que se hace aquí es ir a la fuente.
ser - estar()
expect().toBe()
Se define como:
function toBe() {
return {
compare: function(actual, expected) {
return {
pass: actual === expected
};
}
};
}
Realiza su prueba con lo ===
que significa que cuando se usa comoexpect(foo).toBe(true)
, solo pasará si foo
realmente tiene el valortrue
. Los valores de verdad no harán pasar la prueba.
toBeTruthy ()
expect().toBeTruthy()
Se define como:
function toBeTruthy() {
return {
compare: function(actual) {
return {
pass: !!actual
};
}
};
}
Tipo coerción
Un valor es verdadero si la coerción de este valor a un valor booleano produce el valor true
. La operación !!
prueba la veracidad coaccionando el valor pasado expect
a un valor booleano. Tenga en cuenta que, al contrario de lo que implica la respuesta actualmente aceptada , no== true
es una prueba correcta de veracidad. Obtendrás cosas divertidas como
> "hello" == true
false
> "" == true
false
> [] == true
false
> [1, 2, 3] == true
false
Mientras que usando !!
rendimientos:
> !!"hello"
true
> !!""
false
> !![1, 2, 3]
true
> !![]
true
(Sí, vacío o no, una matriz es verdadera).
a decir verdad()
expect().toBeTrue()
es parte de Jasmine-Matchers (que se registra en npm como jasmine-expect
después de que un proyecto posterior se registrara jasmine-matchers
primero).
expect().toBeTrue()
Se define como:
function toBeTrue(actual) {
return actual === true ||
is(actual, 'Boolean') &&
actual.valueOf();
}
La diferencia con expect().toBeTrue()
y expect().toBe(true)
es que expect().toBeTrue()
prueba si se trata de un Boolean
objeto. expect(new Boolean(true)).toBe(true)
fallaría mientras expect(new Boolean(true)).toBeTrue()
que pasaría. Esto se debe a esta cosa divertida:
> new Boolean(true) === true
false
> new Boolean(true) === false
false
Al menos es verdad:
> !!new Boolean(true)
true
¿Cuál es el más adecuado para usar elem.isDisplayed()
?
Finalmente, el transportador le pasa esta solicitud a Selenium. La documentación establece que el valor producido por .isDisplayed()
es una promesa que se resuelve en a boolean
. Lo tomaría al pie de la letra y usaría .toBeTrue()
o .toBe(true)
. Si encontré un caso donde la implementación devuelve valores de verdad / falsedad, presentaría un informe de error.
.toBe(true)
==.toBeTrue()
. toBeTruthy () puede ser verdadero no solo sobre verdadero , sino también sobre 123 , "dfgdfg", [1,2,3], etc ... básicamenteif(x==true)
son verdaderos, mientras queif(x===true)
son verdaderos verdaderos.