Frontend/Jasmine

Jasmine toBe vs toEqual

ej503 2024. 6. 27. 07:34

기본 유형 (예: 숫자, 부울, 문자열 등)의 경우에는 toBe와 toEqual 사이에 차이가 없다.

 

var a = { bar: 'baz' };
var b = { foo: a };
var c = { foo: a };

 

엄격한 비교 (===) 를 사용하면 일부 항목은 동일하다.

 

> b.foo.bar === c.foo.bar
true

> b.foo.bar === a.bar
true

> c.foo === b.foo
true

 

그러나 이들이 "equal" 이더라도 완전히 같지는 않다. 왜냐하면 그들은 다른 메모리 위치를 가졌기 때문이다.

 

> b === c
false

 

Jasmine의 toBe는 엄격한 동등성을 사용하며, 동일한 객체인지 확인한다. toEqual은 객체를 비교하고 동일한지 확인한다.

 

expect(b).not.toBe(c);
expect(b).toEqual(c);

 

reference https://stackoverflow.com/questions/22413009/jasmine-javascript-testing-tobe-vs-toequal