簡體   English   中英

Nestjs e2e使用模擬貓鼬模型進行測試

[英]Nestjs e2e testing with mocking mongoose model

我正在為我的NestJS + mongoose應用程序編寫端到端測試。 我可以模擬mongoose apis,例如find()delete()等。但是使用this.CatModel(CatObject) save() api,對於代碼this.CatModel(CatObject) ,mocking無法正常工作。 我沒有測試系統的mongodb,所以我需要嘲笑它。

cat.e2e-spec.ts

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);
            });
    });
});

catModel.ts

export const mockCatModel = {
    find: (obj) => {
        return [catMock];
    },

    save : (cat) => {
        return cat;
    }
};

cat.service.ts

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM