[英]Nestjs e2e testing with mocking mongoose model
我正在為我的NestJS + mongoose應用程序編寫端到端測試。 我可以模擬mongoose apis,例如find()
, delete()
等。但是使用this.CatModel(CatObject)
save()
api,對於代碼this.CatModel(CatObject)
,mocking無法正常工作。 我沒有測試系統的mongodb,所以我需要嘲笑它。
describe('cat apis', () => {
let app: INestApplication;
beforeAll(async () => {
const module = await Test.createTestingModule({
imports: [CatModule]
})
.overrideProvider(getModelToken('Cat'))
.useValue(mockCatModel)
.compile();
app = module.createNestApplication();
server = app.getHttpServer();
await app.init();
});
it(`POST /cat `, async () => {
return await request(server)
.post('/cat')
.send(newCatPayload)
.set('Accept', 'application/json')
.expect(201)
.expect(({ body }) => {
expect(body).toEqual(expectedResponse);
});
});
});
export const mockCatModel = {
find: (obj) => {
return [catMock];
},
save : (cat) => {
return cat;
}
};
public async createCat(catObject: CreateCatDto, user): Promise<ICat> {
const oCat = this.catModel(catObject);
oCat.user = user;
return await oCat.save();
}
this.catModel.find()
工作正常但是, this.catModel()
拋出錯誤: 'this.catModel is not a function'
。
我嘗試在catModel.ts中添加以下函數,
function : (a) => {return a;}
但沒有奏效。 如果有人知道如何模擬this.catModel(catObject)
請幫忙。
您是否嘗試過使用useClass
而不是useValue
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.