Я пытаюсь соединить тестовые случаи для 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);
}
});
}
Есть ли в любом случае, я мог бы успешно выполнить мой тестовый пример, модифицируя мой тестовый пример без изменения моей модели?