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

  • Android Police

    Android Poli

    21 NİSAN 2010
  • Besnik Ibrahimi

    Besnik Ibrah

    27 Mart 2010
  • TheSalband Rai

    TheSalband R

    11 NİSAN 2011