Frontend/Jasmine 4

Jasmine toBe vs toEqual

기본 유형 (예: 숫자, 부울, 문자열 등)의 경우에는 toBe와 toEqual 사이에 차이가 없다. var a = { bar: 'baz' };var b = { foo: a };var c = { foo: a }; 엄격한 비교 (===) 를 사용하면 일부 항목은 동일하다. > b.foo.bar === c.foo.bartrue> b.foo.bar === a.bartrue> c.foo === b.footrue 그러나 이들이 "equal" 이더라도 완전히 같지는 않다. 왜냐하면 그들은 다른 메모리 위치를 가졌기 때문이다. > b === cfalse Jasmine의 toBe는 엄격한 동등성을 사용하며, 동일한 객체인지 확인한다. toEqual은 객체를 비교하고 동일한지 확인한다. expect(b).not.toBe..

Frontend/Jasmine 2024.06.27

Difference of spyOn, callThrough, and callFake

메소드를 spy on 할 때, 메소드 호출횟수 등을 기록해보자. class X { addNums(x + y) { return x + y; }}const x = new X();const addNumsSpy = spyOn(x, 'addNums');const result = x.addNums(1, 2);expect(addNumsSpy).toHaveBeenCalled();expect(addNumsSpy).toHaveBeenCalledWith(1, 2);expect(addNumsSpy).toHaveBeenCalledTimes(1);console.log(result); result 는 undefined 이며, 3을 예상한 사람도 있을 것이지만 이것은 spy이기 때문에 그렇지 않다. 다시 말해, spyOn은..

Frontend/Jasmine 2024.06.16