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

  • DanceOn

    DanceOn

    6 Mayıs 2006
  • filmurfreakur

    filmurfreaku

    29 Mart 2007
  • Jucyber Tutoriais

    Jucyber Tuto

    8 EYLÜL 2009