SORU
21 NİSAN 2011, PERŞEMBE


Nasıl diğer modülleri gerektirir node.js bir modül birim test için

Bu benim sorunum dönüm noktası olduğunu gösteren küçük bir örnektir:

var innerLib = require('./path/to/innerLib');

function underTest() {
    return innerLib.doComplexStuff();
}

module.exports = underTest;

Bu kod için bir birim test yazmaya çalışıyorum. Nasıl dışarı require işlevi tamamen alaycı olmadan innerLib gereksinimi alay edebilir miyim?

EDİT: Yani bu küresel dalga geçmeye çalışıyor gerektirir ve bunu yapmak için işe yaramaz olduğunu bulmak:

var path = require('path'),
    vm = require('vm'),
    fs = require('fs'),
    indexPath = path.join(__dirname, './underTest');

var globalRequire = require;
require = function(name) {
    console.log('require: '   name);
    switch(name) {
        case 'connect':
        case indexPath:
            return globalRequire(name);
            break;
    }
};

Sorun undertest.js dosyanın içinde require işlevi aslında alay konusu oldu. Hala require genel işlevi gösteriyor. Sadece dışarı alay yapıyorum aynı dosya içinde require işlevi alay edebilirim gibi görünüyor. Eğer yerel kopya geçersiz ettim sonra bile bir şey vardır, require küresel kullanıyorum, dosyaları gerekli olmaktan hala ** 10 global referans olacaktır.

CEVAP
2 AĞUSTOS 2012, PERŞEMBE


Şimdi yapabilirsiniz!

Test sırasında genel modül içinde ihtiyaç öncelikli ilgilenecek olan proxyquire yayınladım.

Bu gerektiği anlamına gelirkodunuzu değişiklikgerekli modülleri için alay enjekte etmek için.

Proxyquire test ve alay/koçanları iletmekten çalıştığınız modülü çözme basit adımda gerekli modülleri için izin veren bir çok basit bir apı vardır.

@Raynos geleneksel olarak doğru elde etmek ya da bunun yerine geliştirme aşağıdan yukarı yapmak için çok ideal çözümlere başvurmak zorunda kaldı

Proxyquire yarattım neden - yukarıdan aşağıya herhangi bir zorluk olmadan güdümlü geliştirme test izin vermek için temel nedeni de bu.

Eğer sizin ihtiyaçlarınıza uyacak eğer değerlendirmek üzere, belgelere ve örneklere bakabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • After Effects Tutorials w/ Mikey

    After Effect

    24 HAZİRAN 2009
  • EEVblog2

    EEVblog2

    2 HAZİRAN 2014
  • nemoking of kinges

    nemoking of

    4 EYLÜL 2009