테스트코드는 버그를 미연에 방지하고 코드의 신뢰성을 높여준다.
하지만 테스트코드 작성에는 추가적인 시간과 노력이 필요하고, 프로젝트 초기에 작성하지 않으면 유지보수가 어려울 수 있다.
let mockPrisma = {
resumes: {
create: jest.fn(),
findMany: jest.fn(),
findFirst: jest.fn(),
update: jest.fn(),
delete: jest.fn()
}
};
테스트 시 사용하는 메소드를 설정
describe('Resumes Repository Unit Test', () => {
beforeEach(() => {
jest.resetAllMocks();
});
각 테스트가 실행되기 전에 모든 Mock을 초기화
test('createResume Method', async () => {
// Jest 테스트 케이스를 선언
const mockReturn = 'create String';
mockPrisma.resumes.create.mockReturnValue(mockReturn);
// 모의 반환값을 create String으로 정의
const createResume = {
userId: 0,
title: 'title',
content: 'content',
author: 'author'
};
const resume = await resumeRepository.createResume(
createResume.userId,
createResume.author,
createResume.title,
createResume.content
);
// createResume 메소드 실행
expect(resume).toBe(mockReturn);
// resume의 값과 mockReturn의 값이 같은 지 확인
expect(resumeRepository.prisma.resumes.create).toHaveBeenCalledTimes(1);
// create 메소드가 한 번만 실행되었는지 확인
expect(mockPrisma.resumes.create).toHaveBeenCalledWith({
data: createResume
});
});
이런식으로 controller, service, repository 전부 test코드를 작성 후 확인을 해야한다.