메모리에 몽고가 있는 NestJS 단위 테스트...
9010 단어 testingnodenestjsjavascript
테스트할 항목을 확보하기 위해 Squid API를 생성합니다. API는 호출될 때 임의의 squid gif를 제공합니다.
demo repo에서 실제 구현을 볼 수 있습니다.
데이터베이스와 상호 작용하는 코드에 대한 테스트를 작성하는 것은 다소 고통스러운 작업입니다.
테스트 데이터베이스를 만들고 나중에 삭제해야 합니다.
또는
테스트 후 정리하기 위해 수많은 코드를 작성하고 디버깅하게 됩니다...
오늘은 당신의 불행의 끝입니다!
테스트의 수고를 덜어드리기 위해 왔습니다. nestJS, mongoose 및 MongoDB와 함께.... 다른 사용자에게는 죄송합니다.
먼저 새 개발 패키지를 프로젝트에 추가해야 합니다. (이 기사의 끝 부분에 제공된 Github 저장소 링크)
npm i --save-dev mongodb-memory-server
좋습니다. 이제 메모리에서 mongo 데몬을 생성할 수 있습니다! 얼마나 멋진가요?
나는 게으른 녀석이기 때문에 메모리 내 mongod 부트스트래핑 코드를 다시 작성하고 싶지 않습니다.
미리 구성된 루트 MongooseModule을 쉽게 가져올 수 있는 작은 테스트 유틸리티 파일과 연결을 닫는 도우미를 작성해 보겠습니다.
import { MongooseModule, MongooseModuleOptions } from '@nestjs/mongoose';
import { MongoMemoryServer } from 'mongodb-memory-server';
let mongod: MongoMemoryServer;
export const rootMongooseTestModule = (options: MongooseModuleOptions = {}) => MongooseModule.forRootAsync({
useFactory: async () => {
mongod = new MongoMemoryServer();
const mongoUri = await mongod.getUri();
return {
uri: mongoUri,
...options,
}
},
});
export const closeInMongodConnection = async () => {
if (mongod) await mongod.stop();
}
뛰어난 메모리 내 플러그 플레이 MongoDB 데몬!
서비스 및 컨트롤러 테스트에 그 나쁜 소년을 가져오겠습니다.
afterAll
함수에서 연결을 닫는 것을 잊지 마십시오.import { Test, TestingModule } from '@nestjs/testing';
import { MongooseModule } from '@nestjs/mongoose';
import { SquidService } from './squid.service';
import { closeInMongodConnection, rootMongooseTestModule } from '../test-utils/mongo/MongooseTestModule';
import { SquidSchema } from './model/squid.schema';
describe('SquidService', () => {
let service: SquidService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
imports: [
rootMongooseTestModule(),
MongooseModule.forFeature([{ name: 'Squid', schema: SquidSchema }]),
],
providers: [SquidService],
}).compile();
service = module.get<SquidService>(SquidService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
/**
Write meaningful test
**/
afterAll(async () => {
await closeInMongodConnection();
});
});
짜잔!
당신 준비 다 됐어요.
작성 중인 멋진 코드를 테스트하기 위해 돌아가십시오!
다음 시간에는 NestJS에 대한 종단간 테스트 사례를 다룰 것입니다.
출처
NestjJS
NestJS techniques mongodb
mongod-in-memory
The issue that saved me
Reference
이 문제에 관하여(메모리에 몽고가 있는 NestJS 단위 테스트...), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/webeleon/unit-testing-nestjs-with-mongo-in-memory-54gd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)