[TIL] 24.02.21

sssujijjl·2024년 2월 21일

[TIL]

목록 보기
39/51

[Jest]

테스트코드는 버그를 미연에 방지하고 코드의 신뢰성을 높여준다.
하지만 테스트코드 작성에는 추가적인 시간과 노력이 필요하고, 프로젝트 초기에 작성하지 않으면 유지보수가 어려울 수 있다.

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코드를 작성 후 확인을 해야한다.

0개의 댓글