Я занимаюсь разработкой веб-сервера в nodejs и в настоящее время пытаюсь охватить все ветки шутовым тестированием.У меня есть одна функция, logout, которая принимает объекты req и res из express.Мне нужно пройти тест внутри оператора if.
// app.js
function logout(req, res) {
// console.log(req.session.destroy.toString());
req.session.destroy(function (err){
if (err){
console.error(err);
res.sendStatus(500);
}
console.log('Logged out');
res.redirect('/');
});
}
// app.test.js
let res = {sendStatus: jest.fn((inp) => inp)};
let req = {
session: { destroy: jest.fn((callback) => {
callback('TEST_ERROR');
})}
};
test('Test /logout error', async () => {
await logout(req, null);
expect(req.session.destroy.mock.calls.length).toEqual(1);
});
Я уже искал похожие ответы, и единственная тема, которую я смог найти, была this , которая позволила мнечтобы попасть внутрь оператора if, но теперь он выдает ошибку: TypeError: Cannot read property 'sendStatus' of null
.Могу ли я в любом случае разрешить функции обратного вызова доступ к res, который я определил в app.test.js?Мы очень ценим любую помощь или указатели в правильном направлении.
Решено
Как правильно указал plumthedev, в моем app.test.js, когда я вызываю loguout, я передаю null, который у меня былпропущенный.Как только я изменил его, я решил проблему.
// app.test.js
test('Test /logout error', async () => {
await logout(req, res);
expect(req.session.destroy.mock.calls.length).toEqual(1);
});