2016-07-13 19 views
6

Bir düğüm modülünün birim testleri yürütülürken Wins Winston kaydı seçici olarak devre dışı bırakılabilir mi?Birim testleri çalışırken winston günlüğünü devre dışı bırakılsın mı?

İdeal olarak, uygulama çalışırken bilgi ve hata ayıklama amacıyla günlüğe kaydetmeyi, ancak testlerimi çalıştırdığımda sunum birimi sınama sonuçlarını dağıtmadığı için bastırılmak istiyorum.

winston kullanmam Modülümde dahilindeki kullanıcılara

, böyle bir şey: Eğer Jest kullanıyorsanız

// MyModule.js 
var logger = require('winston'); 
module.exports = function() { 
    // does some stuff 
    // and logs some stuff like so: 
    logger.log('an informational message'); 
} 

// MyModuleTest.js 
describe('MyModule', fucntion() { 
    it('should do some stuff', function() { 
    var myModuleUnderTest = require('MyModule'); 
    // some tests 
    } 
} 
+1

http://stackoverflow.com/questions/22709882/how-to-suppress-application-logging-messages-from-a-node-js-application-when-run –

cevap

5

, bunu böyle devre dışı bırakabilirsiniz:

  1. Seti dosyaları kurmak jest testi yapmadan önce koş. package.json yılında:

    { 
        "jest": { 
         "setupFiles": ["<rootDir>/jest-set-up/index.js"] 
        } 
    } 
    
  2. jest-set-up/index.js yılında:

    import winston from 'winston' 
    winston.remove(winston.transports.Console) 
    
+0

sayesinde Örneğin: edit @Meyer, 4 boşluk kullanmayı denedim ama metnimin kod olarak biçimlendirilmediğinden emin değilim –

+0

[ava] (https://github.com/avajs/ava) ile aynı hedefe nasıl ulaşılacağını biliyor musunuz? – aviggiano

4

Winston muhtemelen tüm taşıma çıkarmadan biraz daha güzel ayarlayabileceğiniz bir silent özelliğine sahip ulaştırmaktadır.

böyle biraz daha kolay yapmak için taşıma isim eklemek: testinde Sonra

var logger = new winston.Logger(); 

logger.add(winston.transports.Console, { 
    name: 'console.info', 
    colorize: true, 
    showLevel: true, 
    formatter: consoleFormatter, 
}) 

veya set-up ben seçici oturum açma ve kapatabilirsiniz ile:

logger.transports['console.info'].silent = true // turns off 
logger.transports['console.info'].silent = false // logging back on 
2

Üzgünüm, bu biraz eski bir soru olduğunu biliyorum.

Yaptığım şey biraz çirkin, ancak Jest'in --silent seçeneğini normal olarak kullanmaya devam etmeme izin veriyor. Winston'un silent'u process.argv.indexOf("--silent") >= 0'a ayarladım. için

const logger = new winston.Logger({ 
    …, 
    transports: [ 
    new winston.transports.Console({ 
     …, 
     silent: process.argv.indexOf("--silent") >= 0, 
    }), 
    ], 
}); 
+0

'silent: process.env.NODE_ENV === 'sınama' ayrıca – Palisand

+0

True seçeneğidir. Ama sonra bunu etkinleştiremezsiniz ya da Jest'in direkt olarak --silent' seçeneğini kullanarak oldukça can sıkıcı buldum. –

+0

Ah, Ben sadece ** her zaman ** testleri çalıştırırken winston'u susturmak istiyorsanız bir seçenek olacağını söylemeliydim. – Palisand

İlgili konular