import { Test, TestingModule } from '@nestjs/testing';
import { BoardsService } from './boards.service';
import { BoardRepository } from './board.repository';
import { Board } from './board.entity';
class BoardRepositoryMock {
find() {}
// createQueryBuilder() {
// return {
// where: jest.fn().mockReturnThis(),
// getMany: jest.fn().mockReturnThis(),
// getOne: jest.fn().mockReturnThis(),
// };
// }
// create() {}
// save() {}
// findOne() {}
// delete() {}
}
describe('BoardsService', () => {
let service: BoardsService;
let boardRepository: BoardRepository;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
BoardsService,
{ provide: BoardRepository, useClass: BoardRepositoryMock },
],
}).compile();
service = await module.get<BoardsService>(BoardsService);
boardRepository = module.get<BoardRepository>(BoardRepository);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
describe('getAllBoards()', () => {
it('배열 반환해줘', async () => {
const boards: Board[] = [];
jest.spyOn(boardRepository, 'find').mockResolvedValue(boards);
expect(await service.getAllBoards()).toBeInstanceOf(Array);
});
});
});
class BoardRepositoryMock {
find() {}
// createQueryBuilder() {
// return {
// where: jest.fn().mockReturnThis(),
// getMany: jest.fn().mockReturnThis(),
// getOne: jest.fn().mockReturnThis(),
// };
// }
// create() {}
// save() {}
// findOne() {}
// delete() {}
}
Repository를 Mock로 대체하도록 만들어준다
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
BoardsService,
{ provide: BoardRepository, useClass: BoardRepositoryMock },
],
}).compile();
service = module.get<BoardsService>(BoardsService);
boardRepository = module.get<BoardRepository>(BoardRepository);
});
describe('getAllBoards()', () => {
it('should return an array', async () => {
const boards: Board[] = []; // Mock your expected boards
jest.spyOn(boardRepository, 'find').mockResolvedValue(boards);
// 특정 메서드 호출 시 반환되는 값이 배열의 인스턴스인지 확인
expect(await service.getAllBoards()).toBeInstanceOf(Array);
});
});