본문 바로가기

FE

[ Jest ] toBeCalledWith vs toEqual

728x90

toBeCalledWith : jest.fn()과 같은 Mocking Function에서 사용된다.

해당 함수가 몇번 호출되었는지 검사하거나 호출된 인수를 검사하는데 사용되고 주로 함수가 어떤 인수로 호출되었는지에 관심이 있을 때 사용한다.

toEqual: jest에서 객체나 값의 동등성을 검사할 때 사용되고, 주어진 두 값이 완전히 동일한지 확인할 때 사용한다.

예를들어 ,

exports.isLoggedIn = (req, res, next) => {
  if (req.isAuthenticated()) {
    next();
  } else {
    **res.status(403).send('로그인 필요');**
  }
};

위와같은 함수가 있을때 jest를 사용해서 테스트 할 경우 아래와 같이 작성할 수 있다.

test("로그인 되어 있지 않으면 isLoggedIn이 에러를 응답해야함", () => {
    const req = {
      isAuthenticated: jest.fn(() => false),
    };
    isLoggedIn(req, res, next);
    **expect(res.status).toBeCalledWith(403);**
    **expect(res.send).toBeCalledWith("로그인 필요");**
  });

res.status와 res.send에 toBeCalleWith을 사용하는 이유는 toBeCalleWith자체가 mocking된 가짜함수에 사용되는 함수이기 때문에 동등한지(toEqual) 따질 이유가 없는것이다.

 

toEqual은 아래와 같이 사용될 수 있다. (obj1과 obj2는 동등하기 때문에 테스트 시 통과된다.)

const obj1 = { key: 'hi' };
const obj2 = { key:'hi' };
expect(obj1).toEuqal(obj2); 

 

728x90