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 foorealmente 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 expecta 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-expectdespués de que un proyecto posterior se registrara jasmine-matchersprimero).
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 Booleanobjeto. 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.