[TIL] 24.02.26

sssujijjl·2024년 2월 26일

[TIL]

목록 보기
42/51

[Jest]

import { jest } from '@jest/globals';
import { FeedbacksRepository } from '../../../src/repositories/feedbacks.repository.js'

먼저 jest는 당연히 import 해주고 !
테스트를 할 FeedbacksRepository import 해주었다.

describe('Feedback Repositoty Unit Test', () => {
    let mockPrisma;
    let feedbacksRepositoy;

    beforeEach(() => {
        jest.resetAllMocks();
        mockPrisma = {
            Feedbacks: {
                create: jest.fn(),
                findMany: jest.fn(),
                findFirst: jest.fn(),
                update: jest.fn(),
                delete: jest.fn()
            },
            Tasks: {
                findFirst: jest.fn()
            }
        };
        feedbacksRepositoy = new FeedbacksRepository(mockPrisma);
    });

테스트 코드 실행 전에 이전 mock함수들을 초기화 시켜주고, 다른 것들을 정의해주었다.

    test('createFeedback, findFeedback Method (SUCCESS)', async () => {
        mockFeedbacksRepository.createFeedback.mockResolvedValue(feedback);
        mockFeedbacksRepository.findFeedback.mockResolvedValue(feedback);
        // 위 두가지 코드를 실행했을 때 나오는 값을 feedback이라고 해주었다.
        
        const createfeedback = await feedbacksService.createFeedback(
            feedback.taskId,
            feedback.title,
            feedback.content,
            feedback.name,
            feedback.rating
        );
        // feedbackService.createFeedback에 값을 넣어 createfeedback 변수에 return 값을 담아주었다.

        const findFeedback = await feedbacksService.findFeedback(
            feedback.feedbackId
        );
        // feedbacksService.findFeedback도 마찬가지로 실행시켜서 findFeedback에 값을 담아주었다.

        expect(createfeedback).toEqual(feedback);
        // createfeedback의 값과 feedback의 값이 같은지 확인!
        
        expect(findFeedback).toEqual(createfeedback);
        // findFeedback의 값과 createfeedback의 값이 같은지 확인!
    });

위의 코드는 createFeedback, findFeedback Method가 성공했을 경우를 테스트해주는 테스트코드이다.

    test('createFeedback Method (Missing required values)', async () => {
        await expect(feedbacksService.createFeedback('taskId', 'title', null, 'rating', 'userId')).rejects.toThrowError('필수 값이 입력되지 않았습니다.');
    });

위의 코드는 createFeedback에 필수값이 들어가지 않았을 경우 오류가 제대로 만들어지는지 확인하는 테스트코드이다.

이런식으로 코드를 실행했을 때 성공만 하는 것이 아닌 꼭 실패했을 때의 테스트도 해주자!!

0개의 댓글