В настоящее время я пытаюсь написать несколько модульных тестов для API, который я строю с использованием node.js и Express.Я использую экспресс-сеанс для создания данных сеанса для пользователей, при успешном входе в систему идентификатор пользователя вставляется в данные сеанса.Таким образом, когда они делают еще один запрос от API, я могу проверить, содержит ли сеанс идентификатор, если он, очевидно, не вошел в систему пользователя, поэтому возвращает 401
status.
Я хочу протестировать свой маршрут выхода из системы:
app.get("/logout",(req,res)=>{
if(req.session.UserID){
req.session.destroy((err) => {
console.error(err)
})
res.status(200).send("logged out")
}else{
res.status(401).send("not logged in ")
}
})
Я использую супертест-сессию, следуя тому, что есть на их странице npm для тестирования этого маршрута, вот что у меня до сих пор:
var session = require('supertest-session');
var app = require('../app')
var testSession = null;
beforeEach(function () {
testSession = session(app);
});
describe("/logout",()=>{
var authenticatedSession;
beforeEach(function (done) {
testSession.post('/login')
.send({email:"roman@mail.com", password:"secet"})
.expect(200)
.end(function (err) {
if (err) return done(err);
authenticatedSession = testSession;
console.log(authenticatedSession.session)
return done();
});
});
it("Deletes the users session from session storage",(done)=>{
authenticatedSession.get("/logout")
.expect(200)
.expect("logged out",done)
})
})
Тем не менее, я получаю код ошибки, говорящий, что он ожидал 200, но он получил 401, что означает, что пользователь еще не вошел в систему, я попытался войти authenticatedSession
, но он не содержит данных от имени входа вbeforeEach()
функция.Я совсем новичок в использовании супертеста (только сегодня) и буду признателен за любую помощь!