toBe()versus toEqual(): toEqual()verifica la equivalencia. toBe(), por otro lado, se asegura de que sean exactamente el mismo objeto.
Yo diría usar toBe()cuando se comparan valores y toEqual()cuando se comparan objetos.
Al comparar tipos primitivos, toEqual()y toBe()dará el mismo resultado. Al comparar objetos, toBe()es una comparación más estricta, y si no es exactamente el mismo objeto en la memoria, esto devolverá falso. Entonces, a menos que desee asegurarse de que sea exactamente el mismo objeto en la memoria, utilícelo toEqual()para comparar objetos.
Consulte este enlace para obtener más información: http://evanhahn.com/how-do-i-jasmine/
Ahora, al observar la diferencia entre toBe()y toEqual()cuando se trata de números, no debería haber ninguna diferencia siempre que su comparación sea correcta. 5siempre será equivalente a 5.
Un buen lugar para jugar con esto para ver diferentes resultados está aquí
Actualizar
Una manera fácil de ver toBe()y toEqual()entender es qué hacen exactamente en JavaScript. Según la API de Jasmine, que se encuentra aquí :
toEqual () funciona para literales y variables simples, y debería funcionar para objetos
toBe () se compara con ===
Esencialmente, lo que está diciendo es toEqual()y toBe()es un ===operador Javascripts similar , excepto toBe()que también se está verificando para asegurarse de que sea exactamente el mismo objeto, en eso también para el ejemplo a continuación objectOne === objectTwo //returns false. Sin embargo, toEqual()volverá cierto en esa situación.
Ahora, al menos puede entender por qué cuando se le da:
var objectOne = {
propertyOne: str,
propertyTwo: num
}
var objectTwo = {
propertyOne: str,
propertyTwo: num
}
expect(objectOne).toBe(objectTwo); //returns false
Esto se debe a que, como se indica en esta respuesta a una pregunta diferente pero similar, el ===operador en realidad significa que ambos operandos hacen referencia al mismo objeto, o en el caso de tipos de valor, tienen el mismo valor.
toEqual()se comparará por clave / valores-contenido;toBe()se comparará por referencia de objeto.