如何使用jest模拟mongoose模型依赖

3phpmpom  于 2023-01-21  发布在  Go
关注(0)|答案(1)|浏览(154)

所以我尝试测试一个依赖于另一个模型的mongoose模型,但是我得到一个错误消息Target class "undefined" passed in to the "DefinitionsFactory#createForClass()" method is "undefined".
下面是我的模式:

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import mongoose, { Document } from 'mongoose';
import { User } from '~/user/schemas';

export type JustificationDocument = Justification & Document;

@Schema({ timestamps: true })
export class Justification {
  @Prop({ type: mongoose.Schema.Types.ObjectId, ref: 'User' })
  user: User;

  @Prop({ type: String })
  sku: string;

  @Prop()
  text: string;

  @Prop()
  combatantSku?: string;

  @Prop()
  combatantSkuLink?: string;
}

export const JustificationSchema = SchemaFactory.createForClass(Justification);

    enter code here

这是我尝试使用jest.mock('mongoose');模拟mongoose时的完整错误:error I got

9njqaruj

9njqaruj1#

我遭受了这个错误几乎4天。但我刚刚解决了这个问题。它发生在'@Prop()'装饰器,因为'@nestjs/mongoose'是不模仿。你应该模仿'@nestjs/mongoose'和模仿@Prop应该返回对象。

jest.mock('mongoose');
jest.mock('@nestjs/mongoose', () => {
  const originalModule = jest.requireActual('@nestjs/mongoose');

  return {
    __esModule: true,
    ...originalModule,
    Prop: jest.fn().mockReturnValue(() => {}),
  };
});

我不知道你是否解决或没有,但我希望我的评论帮助别人

相关问题