node교과서

송은우·2022년 1월 13일
0

테스팅 할 대상을 정확하게 처리해야 한다.
단위 테스트는 모킹이 핵심이다.
User.findOne도 대체를 해야 한다.
jest.mock('경로);
const User= require("경로");

가짜로 바꾼 다음에 모킹을 함.
User.findOne.mockReturnValue(Promise.reject(error));
이렇게 붙혀주면 무조건 확정적으로 그 함수가 리턴하는 것처럼 가짜로 만들 수 있음.

단순하게 리턴 값만 넣는 것도 아니고 그 안에 객체리턴 가능

User.findOne.mockReturnValue(Promise.resolve({
 id:1,name:'asdf',
 addFollowings(value){
  return Promise.resolve(true);
 }
}));

test coverage
테스트 한게 있다면 그 파일 내부에 얼마나 차지하는지
jest --coverage

supertest 통합테스트
라우터 안에 islogged in, addfollowing 같은 것들이 다 같이 돌아가야 정상이 된다는 점을 이용해 합쳐서 시뮬레이션 하는 것들

테스트용 서버 app.listen 만 뺀 부분, module exports app;
한 것
진짜 서버는 그대로 유지

처음 가입한 이후에 같은 이메일로 테스트 하기에 오류가 발생함. 이런 것들을 무조건 2~3회 돌려보기.

const agent = request.agent(app);
  beforeEach((done) => {
    agent
      .post("/auth/login")
      .send({
        email: "zerohch0@gmail.com",
        password: "nodejsbook",
      })
      .end(done);
  });

agent를 먼저 만들어보는 장점은 그 상태가 앞으로도 계속 유지된다는 장점이 있음.
describe 단위로 beforeEach는 모든 테스트 시작 전에, afterEach는 모든 테스트 이후

부하 테스트 아킬로 JAVA,
artillery JS

자기가 짠 코드는 최대한 많이 테스트 하기
npm 설치한 패키지는 테스트 X
패키지 라이브러리 사용하는 부분만 테스트
테스크 어려운 패키지는 모킹
모킹해서 통과한 패키지라도 실제는 에러 가능성 있음

시스템 테스트: QA처럼 테스트 목록 만들고 체크 하면서 진행하는 방법
인수 테스트 : 알파 테스트/ 베타테스트 특정 사용자 집단이 실제로 테스트
다양한 종류의 테스트를 주기적으로 수행해 서비스를 안정적으로 유지하는 것이 좋음.

profile
학생의 마음가짐으로 최선을 다하자

0개의 댓글