I am having an error that cannot read property find of undefined when I am trying to pass a mongoose model(UserGroup.name) when writing a unit test case for a service.
service.spec.ts
const module: TestingModule = await Test.createTestingModule({
providers: [
{ provide: getModelToken(User.name), useValue: Model },
{ provide: getModelToken(UserGroup.name), useValue: { find: jest.fn(() => userGroupResp) } },
{ provide: getModelToken(UserCredential.name), useValue: Model },
{ provide: getModelToken(ActivityLog.name), useValue: Model },
LoggerService,
I18nRequestScopeService,
{ provide: I18nService, useValue: option },
productServiceProvider,
UserMongoService,
],
}).compile();
service.ts
constructor(
@InjectModel("User") private readonly userModel: Model<IUser>,
@InjectModel(UserGroup.name) private readonly userGroupModel: Model<IUserGroup>,
@InjectModel("UserCredential") private readonly userCredentialModel: Model<any>,
@InjectModel("ActivityLog") private readonly activityLogModel: Model<any>,
private readonly logger: LoggerService,
private readonly i18n: I18nRequestScopeService,
private productMongoService: ProductMongoService
) { }
async getUserGroups()
{
userGroups = await this.userGroupModel.find( // having undefined error at this line.
{
productId: currentProduct,
},
);
}
the error is only while testing otherwise it is working fine.