Oi, Gabriel, tudo bem?
Os métodos toEqual
e toBe
tem uma semelhança para tipos primitivos: Numbers, Booleans, Strings, etc. Quando colocados dessa forma, eles tem o mesmo resultado. Por exemplo:
let a = 5
let b = 5
a ===b // true
ou
let a = 'Olá mundo'
let b = 'Olá mundo'
a === b // true
Já que no caso acima estamos tratando de tipos primitivos, então, o toEqual
e toBe
irão trabalhar da mesma forma.
Mas caso, tenhamos um objeto vazio:
let a = { }
let b = { }
a === b // false
O toBe
não é indicado no caso acima por não ser um tipo primitivo, já que o toEqual
verifica se dois objetos têm o mesmo valor. Este matcher verifica recursivamente a igualdade de todos os campos, em vez de verificar a identidade do objeto e o toEqual
ele é um deep check, o que basicamente, permite que ele faça uma verificação mais profunda dos elementos, incluindo, alocação de memória.
Se ficou alguma dúvida, é só falar!