При модульном тестировании моего приложения node.js(которое в основном является бэкэнд REST) с использованием мокко и супертеста, мне нужно только тестовое сообщение на экране, но stdout также захламляется сообщениями журнала приложений.
Я запускаю unit test с помощью
mocha -R spec .
... и получить этот вывод (этого не должно быть):
[App] Listening on port 3000 ...
[App] Starting app, hooray!
Project API
GET /projects
[App] entering "projects" module ...
√ should return an array of projects (317ms)
Я отметил сообщение журнала приложения с помощью [App]. То, что я действительно хочу, будет этот вывод из unit test:
Project API
GET /projects
√ should return an array of projects (317ms)
Как я могу подавить вывод console.log/warn/error приложением, перемежающимся с выходом репортера Mocha?
РЕШЕНИЕ:
Следуя подходу dankohn, я закончил так, что решает мою проблему (используя winston для ведения журнала):
(в node "основном" файле сервера, server.js:)
if (process.env.NODE_ENV !== 'test') {
logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)(),
new (winston.transports.File)({ filename: 'foo.log' })
]
});
} else {
// while testing, log only to file, leaving stdout free for unit test status messages
logger = new (winston.Logger)({
transports: [
new (winston.transports.File)({ filename: 'foo.log' })
]
});
}
... и для установки переменной env каждый файл unit test начинается с:
process.env.NODE_ENV = 'test';