2015-05-05 28 views
7

içine benim app/çerçeve belirli dosyaları gerektiren küresel bir işlevi yazdım değil:require.main.require eserler ancak Mocha testi

global.coRequireModel = function(name) { 
    // CRASH happens here 
    return require.main.require('./api/_co' + name + '/_co' + name + '.model'); 
} 

Bu modül içinde/bileşenleri/coGlobalFunctions olduğunu. Kullandığım diğer modüllerde Sonra

require('./components/coGlobalFunctions'); 

çerçevesinden "bir şey" kullanarak

:

var baseScheme = coRequireModel('Base'); 

Bu çalışır ancak benim ana app gereklidir

böyle app.js Bana, require.main.require çağrısından hemen önce bir "Hata: Modül bulunamadı" hatası veren Mocha testleri.

Test başka bir kaynak klasörden geliyor gibi görünüyor. Ama ihtiyacımın sebebini gördüm.Mesaj.Meyve, modülleri göreceli olarak bağlamanın gerekliliğini ortaya çıkaracaktı.

DÜZENLEME:

API/kullanıcı yaşayan bir örnek test dosyası: düğümünden direkt olarak çalıştırıldığı modüle

var should = require('should'); 
var app = require('../../app'); 
var User = require('./user.model'); 
... 
+0

bunun için geçici bir çözüm buldu: buraya bakın karışıklık çözümleri, - ".." - başka önlemek-For

? Belki de testlerde modülü ayarlamak için? – Chathushka

cevap

4

require.main sayı. Yani, node app.js çalıştırırsanız, require.main, app.js işaret eder. Öte yandan, mocha kullanarak koştunuz, daha sonra require.main mocha'ya işaret edecektir. Bu muhtemelen sınavlarınızın başarısız olmasına neden oluyor.

Daha fazla ayrıntı için the node docs adresine bakın.

+0

Burada en iyi uygulama nedir? – Jonah

5

require.main, mocha testlerini çalıştırırken node-webkit uygulamamda index.html olmadığından, modülleri çözememekle ilgili hataları sola ve sağa çevirdi. (Tüm testlerde ilk şey gereklidir) benim test-helper.js içinde Hacky düzeltme düzelttim: o amele olsa

var path = require('path') 
require.main.require = function (name) { 
    // navigate to main directory 
    var newPath = path.join(__dirname, '../', name) 
    return require(newPath) 
} 

Bu, yanlış geliyor. Bunu düzeltmenin daha iyi bir yolu var mı? Yukarıdaki çözümlerin bazılarını mocha testi yapmak için 7 ile birleştirmek gibi bir şeydir, fakat ana öğelerin değiştirilmesi, gerçekten testler sırasında gerçekten her şeyin işe yaramasını gerektirir. https://gist.github.com/branneman/8048520

İlgili konular