jest 알아보기

0

jest

목록 보기
1/1
post-thumbnail

jest는 JS 테스트 프레임워크이다.

내가 작성한 코드가 제대로 동작하는지 확인할때 사용한다.

테스트 파일 이름은 .test.js로 한다.

기초문법

let temp;
describe("simple test", () => {
  beforeEach(() => {
    temp = 1;
  });
  afterEach(() => {
    temp = 0;
  });
  test('1 is 1', () => {
    expect(1).toBe(1);
  });
  test('[1,2,3] is [1,2,3]', () => {
    expect([1,2,3]).toEqual(1);
  });
})

1. describe
테스트 단위를 묶는 가장 큰 단위이다.
2. test, it
test(), it()을 통해 기본 테스트를 한다.
3. expect
expect()안에 테스트할 변수나 값을 넣는다. 이후 toBe나 toEqual을 이용하여 예측 값과 비교한다.
4. beforeEach, afterEach
beforeEach는 test()가 실행할 때마다 실행해주는 전처리기이다.
afterEach의 경우 test()가 종료될 때마다 실행하는 후처리기이다.

let temp;
describe("simple test", () => {
  beforeEach(() => {
    temp = 2;
  });
  afterEach(() => {
    temp = 0;
  });
  test('tmep is 2', () => {
    expect(temp).toBe(2); // true
  });
  test('temp is 2', () => {
    expect(temp).toBe(2); // true
  });
});

위에 예시는 계속해서 테스트를 진행하여도 temp는 2이다.

<Matcher 함수>

1. toBe, toEqual
결과 예측으로 가장 많이 쓴다.
toBe는 단순비교, toEqual은 배열이나 객체 내부까지 깊은 비교를 해준다.
2. toBeTruthy(), toBeFalsy()
toBeTruthy()는 검증 대상이 이 규칙에 따라 true로 간주되면 테스트 통과이고, toBeFalsy()는 반대로 false로 간주되는 경우 테스트가 통과됩니다.
3.toHaveLength(), toContain()
배열의 경우에는 배열이 길이를 체크하거나 특정 원소가 존재 여부를 테스트하는 경우가 많습니다. toHaveLength() 배열의 길이를 체크할 때 쓰이고, toContain() 특정 원소가 배열에 들어있는지를 테스트할 때 쓰입니다.
4. toMatch()
문자열의 경우에는 단순히 toBe()를 사용해서 문자열이 정확히 일치하는지를 체크하지만, 종종 정규식 기반의 테스트가 필요할 떄가 있는데 toMatch() 함수를 사용하면됩니다.
5.toHaveProperty(keypath,value?)
객체안에 참조 keyPath의 속성이 존재하는지 테스트할때 사용할 수 있습니다. 객테에서 깇이 중첩된 속석을 확인하려면 점 표기법 또는 keyPath가 포함된 배열을 사용할 수 있습니다.

알아보기

describe('JWT 모듈 테스트', () => { //describe -테스트단위 크게 묶기
  test('id로 access_token을 발행할 수 있다.', () => { //test(테스트설명,함수)기본테스트
    const id = 'test_id'
    const token = jwt.signAccessToken(id)
    expect(token).toBeTruthy() //exprect 값과 비교 ,toBeTruthy 참거짓 판별
    expect(token).toMatch(/^.+$/)
  })
  test('verify로 복호화하면 id와 iat(발행시간)을 얻을 수 있다.', () => {
    const id = 'test_id'
    const token = jwt.signAccessToken(id)
    const verified = jwt.verifyToken(token)
    expect(verified).toHaveProperty('id', 'test_id')//toHaveProperty(key,value) expect안 값과 비교
    expect(verified).toHaveProperty('iat', expect.any(Number))
  })
})
profile
👩🏻‍💻항상발전하자 🔥

0개의 댓글