Tengo un servicio nestjs que usa mongoose. En una función que deseo probar, crea un nuevo modelo, pero no pude encontrar una manera de burlarme de eso.
tengo el siguiente servicio
@Injectable() export class ProjectService { constructor( @InjectModel("Project") private projectModel: Model<ProjectDocument>, ) {} public dto2ProjectModel(dto: ProjectDto) { return new this.projectModel({ _id: dto.id? Types.ObjectId(dto.id) : Types.ObjectId(), name: dto.name.toUpperCase() }); } }Y creé la prueba siguiendo la documentación así:
describe('ProjectService tests', () => { let projectService: ProjectService; beforeEach(async () => { const moduleRef = await Test.createTestingModule({ providers: [ ProjectService, { provide: getModelToken("Project"), useValue: { find: jest.fn(), findById: jest.fn() } } ] }).compile(); projectService = moduleRef.get<ProjectService>(ProjectService); }); describe('dto2ProjectModel', () => { it('should return a project with the uppercase name', async () => { const projectDto: ProjectDto = new ProjectDto(); projectDto.id = '5a2539b41c574006c46f1a09'; projectDto.name = 'someName'; expect(await projectService.dto2ProjectModel(projectDto).name).toEqual('SOMENAME'); }); }); }); Intenté hacerlo con el ejemplo en la documentación de nestjs y los métodos de modelo burlón como find está bien, pero el new this.projectModel({}) no funciona.
¡Cualquier idea es muy apreciada!