2012-04-10 22 views
9

Bu soru, büyük olasılıkla node.js ile ilgili önceki deneyimimden yoksun olmamıza dayanıyordu, ancak jasmine-node'un, komut satırındaki yasemin özelliklerini çalıştırmama izin vereceğini umuyordum.jasmine-node neden yardımcımı almıyor?

TestHelper.js:

var helper_func = function() { 
    console.log("IN HELPER FUNC"); 
}; 

my_test.spec.js:

describe ('Example Test', function() { 
    it ('should use the helper function', function() { 
    helper_func(); 
    expect(true).toBe(true); 
    }); 
}); 

olanlar dizinde sadece iki dosyalardır. Sonra bulduğumda:

jasmine-node . 

Ben

ReferenceError: helper_func is not defined 

olsun ben bu cevabı kolaydır eminim ama github üzerinde bariz herhangi süper basit tanıtımlar veya bir şey bulamadık . Herhangi bir tavsiye veya yardım büyük takdir edilecektir!

Teşekkürler!

cevap

16

Düğümde, her şey js dosyasına adlandırılmıştır.

var helper_func = function() { 
    console.log("IN HELPER FUNC"); 
}; 
// exports is the "magic" variable that other files can read 
exports.helper_func = helper_func; 

Ve sonra my_test.spec.js değiştirmek şöyle görünecek şekilde: diğer dosyalar tarafından işlev çağrılabilir hale getirmek için, bu gibi görünmek TestHelper.js değiştirmek son olarak,

// include the helpers and get a reference to it's exports variable 
var helpers = require('./TestHelpers'); 

describe ('Example Test', function() { 
    it ('should use the helper function', function() { 
    helpers.helper_func(); // note the change here too 
    expect(true).toBe(true); 
    }); 
}); 

ve jasmine-node .'un dizindeki her dosyayı sırayla çalıştırdığına inanıyorum - ancak yardımcıları çalıştırmanız gerekmez. Bunun yerine, bunları farklı bir dizine taşıyabilir (ve require()'daki ./'u doğru yola göre değiştirebilirsiniz) veya jasmine-node *.spec.js'u çalıştırabilirsiniz.

+0

Çok teşekkürler atıflar yapmak mümkün olacak! Yani ... açgözlü olmak, bu bir şekilde jasmine-node ve SpecRunner.html kullanarak çalıştırmak için dönüştürülebilir mi? Html sürümünü kullanırken "ihracat tanımlanmadı" ve "gereksinim tanımlanmadı". – Hoopes

+0

Kullanmamıştım, ama http://requirejs.org/ yardımcı olacağını düşünüyorum. –

+1

Alternatif olarak, basit bir çözüm için –

2

mutlaka spesifikasyonu (test) da yardımcı komut dosyasını dahil gerekmez siz yasemin yapılandırma varsa dosya: yardımcıları/klasördeki

{ 
    "spec_dir": "spec", 
    "spec_files": [ 
    "**/*[sS]pec.js" 
    ], 
    "helpers": [ 
    "helpers/**/*.js" 
    ], 
    "stopSpecOnExpectationFailure": false, 
    "random": false 
} 

Herşey Spec dosyalardan önce çalışacaktır. Yardımcı dosyalarda, işlevin eklenmesi için böyle bir şey var.

beforeAll(function(){ 
    this.helper_func = function() { 
    console.log("IN HELPER FUNC"); 
    }; 
}); 

sonra spec dosyalarında buna

İlgili konular