我有下一张卡模型
export class Card extends Document {
@Prop({ required: true, immutable: true})
id: string;
@Prop({ required: true })
name: string;
...
export const CardSchema = SchemaFactory.createForClass(Card);
}当我试图模拟测试中的数据时,测试就冻结了。
import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import * as request from 'supertest';
import { AppModule } from '../../../../src/app.module';
import { createAuthToken } from '../../../helpers/auth.helper';
import { Card } from '../../../../src/card/card.schema';
import { Model } from 'mongoose';
import { getModelToken } from '@nestjs/mongoose';
import mockingoose from 'mockingoose';
describe('GET /card:id', () => {
let app: INestApplication;
let cardModel: Model<Card>;
beforeAll(async () => {
...
});
it('Should receive card data', async () => {
...
mockingoose(cardModel).toReturn(_doc, 'findOne');
return request(app.getHttpServer())
.get('/card/test')
.set('Content-Type', 'application/json')
.set('Authorization', `Bearer ${createAuthToken(user)}`)
.expect(200);
})
...
});我有控制器,DTO和加载实体的服务。
这是控制台屏幕:测试测井屏
发布于 2022-04-13 20:55:51
这可能是由于“猫鼬”的不同实例之间的相互作用。检查是否在模块层次结构中导入了猫鼬的其他实例。
我有一个和你描述的非常相似的问题。使用多个导入,它们中有几个正在加载猫鼬对象,当我添加mockingoose时,这些对象一起使测试用例无限期挂起。
例如,假设模块A导入/加载‘猫鼬’,然后导入同样需要/加载' mongoose‘(并模拟猫鼬连接)的mockingoose。由于某些原因,这些可能相互冲突的猫鼬引用之间存在着奇怪的相互作用,使得测试用例无限期地挂起而没有响应。
我解决这个问题的方法是重构代码,这样在使用mockingoose时,我所指的唯一位置就是测试文件。我所有导入的模块都不引用猫鼬对象。您可以通过利用依赖注入的良好设计来做到这一点。
https://stackoverflow.com/questions/63170559
复制相似问题