Node JS Модульное тестирование с использованием Jest и mockin goose с удалением - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь соединить тестовые случаи для api узла, используя jest и библиотеку mockin goose.

Мой Factory метод выглядит следующим образом:

const deleteFAQ=(request,reply)=>{
    faqs.remove(request.payload.mongoId,success=>{
          reply(Response.sendResponse(true, success, ResponseMessages.SUCCESS, StatusCodes.OK));
    },
error=>{
    log.error('ERROR : ', error);
    reply(Response.sendResponse(false, error, ResponseMessages.ERROR, 400));
});

};

My Модель для удаления выглядит следующим образом:

 remove = (condition, success_callback, error_callback) => {
        "use strict";
        faq.remove({ _id: condition }, (err, docs) => {
            if (err || docs.result.n <= 0) {
                error_callback(err || docs.result);
            } else {
                success_callback(docs);
            }
        });

    }

и My Контрольный пример это что-то вроде этого:

test.only('deleteFAQ Success Case', async(done) => {
        const request = {
            payload: {
                'mongoId': '1234567890'
            },
            headers: {
                authorization: testData.authorization
            }
        }
        mockingoose(faqModel.faq).toReturn({"n":1,"ok":1}, 'remove');
        const result = await promisify(faqFactory.deleteFAQ, request);
        expect(result).toBeDefined();
        expect(result.status).toEqual(200);
        done();
    })

Теперь, когда я запускаю свои тесты, я сталкиваюсь со следующей ошибкой :

test cases for FAQ Factory › deleteFAQ Success Case

    Error [ERR_UNHANDLED_ERROR]: Unhandled error. (TypeError: Cannot read property 'n' of undefined

      74 |         "use strict";
      75 |         faq.remove({ _id: condition }, (err, docs) => {
    > 76 |             if (err || docs.result.n <= 0) {
         |                                    ^
      77 |                 error_callback(err || docs.result);
      78 |             } else {
      79 |                 success_callback(docs);

      at faq.remove (src/Models/faq.js:76:36)
      at node_modules/mongoose/lib/model.js:4032:16
      at model.Query.<anonymous> (node_modules/mockingoose/src/index.ts:142:12)
      at node_modules/mockingoose/lib/index.js:7:71
      at Object.<anonymous>.__awaiter (node_modules/mockingoose/lib/index.js:3:12)
      at model.Query.mockedReturn (node_modules/mockingoose/lib/index.js:32:12)
      at model.Query.<anonymous> (node_modules/mockingoose/src/index.ts:219:23)
      at model.Query.<anonymous> (node_modules/mockingoose/src/index.ts:214:24)
      at Function.remove (node_modules/mongoose/lib/model.js:1217:13)
      at Object.remove (src/Models/faq.js:75:13)
      at payload (src/factory/factory_faq.js:124:10)
      at resolve (_helper_/util.js:8:16)
      at promisify (_helper_/util.js:6:12)
      at Object.test.only (__tests__/faqFactory.test.js:60:30)
      at process._tickCallback (internal/process/next_tick.js:68:7))
      at node_modules/mongoose/lib/model.js:4034:13
      at model.Query.<anonymous> (node_modules/mockingoose/src/index.ts:142:12)
      at node_modules/mockingoose/lib/index.js:7:71
      at Object.<anonymous>.__awaiter (node_modules/mockingoose/lib/index.js:3:12)
      at model.Query.mockedReturn (node_modules/mockingoose/lib/index.js:32:12)
      at model.Query.<anonymous> (node_modules/mockingoose/src/index.ts:219:23)

Но если я Изменить мою модель на что-то вроде ниже, тестовый пример успешно выполняется:

remove = (condition, success_callback, error_callback) => {
        "use strict";
        faq.remove({ _id: condition }, (err, docs) => {
            if (err) {
                error_callback(err);
            } else {
                success_callback(docs);
            }
        });

    }

Есть ли в любом случае, я мог бы успешно выполнить мой тестовый пример, модифицируя мой тестовый пример без изменения моей модели?

...