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에 필수값이 들어가지 않았을 경우 오류가 제대로 만들어지는지 확인하는 테스트코드이다.
이런식으로 코드를 실행했을 때 성공만 하는 것이 아닌 꼭 실패했을 때의 테스트도 해주자!!