Я пытаюсь проверить поведение определенного маршрута.Он продолжает запуск промежуточного программного обеспечения, даже когда я создаю заглушку.Я хочу, чтобы аутентификация события просто прошла на данный момент.Я понимаю, что это не совсем «модульный» тест на данный момент.Я получаю там.Я также немного упростил код.Вот код для проверки:
const { rejectUnauthenticated } = require('../modules/event-authentication.middleware');
router.get('/event', rejectUnauthenticated, (req, res) => {
res.sendStatus(200);
});
Вот промежуточное ПО, которое я пытаюсь пропустить:
const rejectUnauthenticated = async (req, res, next) => {
const { secretKey } = req.query;
if (secretKey) {
next();
} else {
res.status(403).send('Forbidden. Must include Secret Key for Event.');
}
};
module.exports = {
rejectUnauthenticated,
};
Тестовый файл:
const chai = require('chai');
const chaiHttp = require('chai-http');
const sinon = require('sinon');
let app;
const authenticationMiddleware = require('../server/modules/event-authentication.middleware');
const { expect } = chai;
chai.use(chaiHttp);
describe('with correct secret key', () => {
it('should return bracket', (done) => {
sinon.stub(authenticationMiddleware, 'rejectUnauthenticated')
.callsFake(async (req, res, next) => next());
app = require('../server/server.js');
chai.request(app)
.get('/code-championship/registrant/event')
.end((err, response) => {
expect(response).to.have.status(200);
authenticationMiddleware.rejectUnauthenticated.restore();
done();
});
});
});
I 'мы пробовали следующие подобные вопросы: Как смоделировать промежуточное ПО в Express, чтобы пропустить проверку подлинности для модульного теста? и это: Узел Express es6 Sinon, заглушающее промежуточное ПО, не работает , но я все ещеполучить 403 из промежуточного программного обеспечения, которое следует пропустить.Я также запустил тесты в режиме отладки, так что я знаю, что функция промежуточного программного обеспечения, которая должна быть включена, все еще работает.
Это проблема с заглушкой моего кода?Это проблема ES6?
Могу ли я реструктурировать свой код или тест, чтобы эта работа работала?