과거공부모음

나의 개발일지 20221227 TIL(Today I learned) - jest

MUJA 2022. 12. 27. 22:19

Today I learned

  • 애로우 함수 this
  • JEST

오늘은 애로우 함수를 사용하다가 this의 이상한 작동을 발견했다 애로우 함수에서 this가 작동을 하지 않았다

그리고 상위 스코프의 this를 바인딩한다

const cat = {
    name: 'meow',
    foo1: function () {
        const foo2 = () => {
            console.log(this.name);
        }
        foo2();
    }
};

cat.foo1();

애로우 함수의 this의 특징을 알았다 애로우 함수를 자주 사용하니까 꼭 기억하자

 

내가 작업한 코드가 잘 동작하는지 test를 해야한다 그러기 위해서 test코드가 필요하다

이러한 부분을 쉽게 도와주는 jest를 사용해보자

테스트를 위해서 필요하니까 devDependencies에 설치를 한다

npm install -D jest

간단한 예제로 사용해보자

describe('계산 테스트', () => {
   const a = true;

   test('a는 참이다.', () => {
      expect(a).toEqual(true);
   });
});

describe로 테스트 그룹을 묶어주고 그 안에 테스트를 작성한다

예제로 사용해 봤으니까 실습에서 사용을 해보자

describe('Layered Architecture Pattern Posts Service Unit Test', () => {
  beforeEach(() => {
    jest.resetAllMocks();
  })

  test('Posts Service findAllPost Method', async () => {
    const findAllPostReturnValue = [
      {
        postId: 1,
        nickname: "Nickname_1",
        title: "Title_1",
        createdAt: new Date('06 October 2011 15:50 UTC'),
        updatedAt: new Date('06 October 2011 15:50 UTC'),
      },
      {
        postId: 2,
        nickname: "Nickname_2",
        title: "Title_2",
        createdAt: new Date('07 October 2011 15:50 UTC'),
        updatedAt: new Date('07 October 2011 15:50 UTC'),
      },
    ]
    
    mockPostsRepository.findAllPost = jest.fn(() => {
      return findAllPostReturnValue;
    })

    const allPost = await postService.findAllPost();

    expect(allPost).toEqual(
      findAllPostReturnValue.sort((a, b) => {
        return b.createdAt - a.createdAt;
      })
    );

    expect(mockPostsRepository.findAllPost).toHaveBeenCalledTimes(1);

  });

자주 사용하는 애로우 함수에 대해서 자세히 알고 테스팅을 위해 jest를 사용하는 법을 알았다