Pull to refresh
0
0

Пользователь

Send message
Спасибо за доходчивое разъяснение. Насчет странного поведения, мне оно казалось вполне ожидаемым, точнее то что proxyquire заменяет кешированную версию модуля и если бы нужно было вернуть нормальное поведение я бы удалил модуль из кеша в соответствии с документацией https://nodejs.org/api/globals.html#globals_require_cache. Ваш вариант rewiremock с enable/disable действительно выглядит намного лучше и понятнее.
В readme репозитория не помешал бы список публичных методов API с их кратким описанием, а в репозитории папка examples с простыми и самодостаточными примерами без лишнего кода. В остальном rewiremock выглядит приятно, возьму на вооружение.
промахнулся веткой
Как будет выглядеть подобный пример, если заменить proxyquire на rewiremock?
// test.js
const proxyquire = require('proxyquire');
const sinon = require('sinon');
const assert = require('assert');

const uptime = sinon.spy();

proxyquire('./app', { process: { uptime } });

const app = require('./app');
assert(uptime.notCalled);
app.uptime();
assert(uptime.calledOnce);

// app.js
const process = require('process');
module.exports = {
    uptime: process.uptime,
};
Вопрос не в том зачем отключать, а в гибкости. Не нравится пример с куками, есть аналогичный по сути пример с cors. Допустим возникла необходимость на конкретный маршрут API, либо на определенный неймспейс отдавать заголовок «Access-Control-Allow-Origin: *», в случае с expressjs вставляем middleware перед любым нужным маршрутом. Если нужно что-то по сложнее чем *, то берем готовый middleware из npm, а в вашем случае, на каждую типовую задачу придется писать свой велосипед.
контроллеры и экшены, которые нам навязывает expressjs

нет в expressjs никаких контроллеров и экшенов, есть только middleware

Насчет гибкости роутера, как в этом фреймворке можно исключить парсинг кук и работу с сессией например для маршрута «GET /assets/<filePath:.*>»? В expressjs это тривиальная задача.

т.е. если вам нужно будет в середине проекта воткнуть логгер

Не понятно в чем проблема:
router.get('/user/:id',user.getById)

router.get('/user/:id', [loggerBefore, user.getById, loggerAfter])

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity