Тестирование Nestjs e2e с моделью издевательского мангуста - PullRequest
0 голосов
/ 06 июня 2019

Я пишу сквозной тест для моего приложения 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).

1 Ответ

0 голосов
/ 17 июня 2019

Вы пытались использовать useClass вместо useValue?

...