Я пишу сквозной тест для моего приложения NestJS + mongoose с supertest.Я могу издеваться над API-интерфейсом мангуста, таким как find()
, delete()
и т. Д. Но с API-интерфейсом мангуста save()
, для кода this.CatModel(CatObject)
, насмешка не работает.У меня нет 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)
.