2014-08-31 23 views
11

, bir dosya içeren mocha.opts var şu:Mocha mocha.opts'ta mkharmoni seçeneğini görmezden geliyor mu? benim test dizininde

--harmony 
--recursive 
--growl 
--reporter spec 
--require should 

Ben mocha çalıştırdığınızda, aşağıdaki hatayı alıyorum: my kullanımı nedeniyle,

/project/server/utilities/encryption.js:3 
const 
^^^^^ 
SyntaxError: Use of const in strict mode. 

Bu tabii ki const, ES6 Uyumu gerektirir. mocha --harmony'u çalıştırdığımda testlerim gayet iyi çalışıyor. Ve benim mocha.opts dosyamdaki diğer girdiler beklendiği gibi çalışır.

mocha.opts dosyası herhangi bir nedenden dolayı --harmony argümanını dikkate almıyor mu? Yoksa yanlış mı yapıyorum? Mocha doktorları detaylandırmıyor ve cevabı burada veya başka bir yerde bulamadım.

cevap

18

asker sorar:

When I run mocha --harmony , my tests execute just fine. [...]

Does the mocha.opts file ignore the --harmony argument for some reason?

Evet, mocha.opts--harmony argüman yok sayar. --harmony seçeneği, bir Mocha seçeneği değil, bir Node.js seçeneği. Bu,'dan önce Node.js 'a geçirilmesi gereken bir seçenektir. Ancak, Node.js başladıktan sonra mocha.opts okunur ve böylece Mocha bu seçeneği anlayabilse bile, bu konuda hiçbir şey yapamazdı.

Peki neden komut satırında çalışıyor? mocha --harmony'u çalıştırdığımda, Mocha'nın ilk olarak --harmony seçeneğini ayrıştırmadan önce başlaması gerekmiyor mu? Hayır, çünkü mocha "gerçek" Mocha'yı başlatan komut dosyasıdır. Kabuk betiği, --harmony'u algılar ve "gerçek" Mocha'yı başlattığı zaman Node.js'ye geçtiğinden emin olur.

+0

Açıkça açıkladı, teşekkürler. – user3112401

+1

Nitpick - mocha, gerçek Mocha adını veren bir js betiğidir. Bu bir kabuk senaryosu değildir. – manojlds

+1

mocha, kendisini "uygun düğüm" ile değiştirmek için execv() 'yi kullanabilir. Herkes bunu her zaman yapar. – toriningen

0

mocha.opts'da ekleyebileceğiniz bir şey olarak desteklenmiyor. mocha'u aradığınızda komut satırına çok şey eklersiniz. Bkz this.

İlgili konular