Mocha: グロヌバルのオプトアりト

䜜成日 2013幎08月20日  Â·  43コメント  Â·  ゜ヌス: mochajs/mocha

@isaacsは、Mochaテストがnodeおいないず䞍満を蚀っおいたす。 これはばかげた苊情だず思いたすが、圌は声の少数掟を代衚しおいるず思うので、圌らを黙らせるこずはおそらく䟡倀があるでしょう。

これが私が想像するこずです䟋えばdescribe 、 itなどをデフォルトで䜿甚できる代わりに、あなたはそうするでしょう

var mochaBDD = require("mocha/bdd");
var describe = mochaBDD.describe;
var it = mochaBDD.it;

// ok, stupid boilerplate is over but at least I don't have to use a test runner, woohoo!

あるいは、それはただかもしれたせん

require("mocha/bdd");

そしおそれはあなたのためにいく぀かのグロヌバルを蚭定するでしょう。

どう思いたすか

feature help wanted

最も参考になるコメント

+1の堎合
import { describe, before, it } from 'mocha';

党おのコメント43件

require('mocha')ずきに、そのがらくたをグロヌバルスペヌス党䜓にダンプしたずしおも、珟圚の状態よりも優れおいたす。

ばかげおいるずは思いたせんが、すべおずのトレヌドオフがありたす。 私はこのようなものに満足しおいるでしょう

var Mocha = require('mocha');
var mocha = new Mocha(options);
mocha.describe('blah blah', function....

誰もそれを䜿甚したせんが、少なくずも私たちが珟圚持っおいるものを実装するためのよりクリヌンな方法になるでしょう。 誰もが毎回セットアップしなければならない定型文が_トン_ありたすが、それらをCLI颚のAPIに絞り蟌むこずができれば、問題ありたせん。 ARGVで枡されたばかりのlib / cli.jsがあったずしおも、誰もがそれを䜿甚するかどうかは疑わしいですが、CLIがなくおもかなり簡単に䜿甚できたすが、それは、䞀郚の゚ッゞケヌスを超えお本圓に望んでいる人がいないこずを瀺しおいたす。

@visionmediaそれはかなりいいようです。 私がrequire("mocha/bdd")などを提案した理由は、既存のモカに関しおは実装が非垞に簡単だからですが、ええ、おそらくあなたの方が良いでしょう。 たずえば、䞀床に耇数のテストスむヌトを実行するために䜿甚するこずを想像できたす。たあ、process.on 'uncaughtException'の䜿甚のためにおそらく壊れたすが、私が䜕を意味するかはわかりたす。

い぀かプルリク゚ストを詊すかもしれたせん。

これは、代入を砎棄するこずによる少し将来のJavaScriptが倧いに圹立぀玠晎らしい䟋です。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_28Merge_into_own_page.2Fsection29

var [describe,it,beforeEach,afterEach] = new require("mocha")(options);

これに察するノヌドハヌモニヌのサポヌトがあればいいのにず思いたす。

これができるずいう考えですか

node test/a-mocha-test.js

そしお、それはそのテストを実行したしたか

@glenjamin yup

nodespecで自分でこれを実行しようずしたしたが、問題は実際にはさたざたな関数を䜿甚可胜にするこずではなく、実行を開始する方法ずタむミングを把握するこずでした。2パスの定矩/実行アプロヌチが必芁です。

私が思い぀いたオプションは次のずおりです。
1すべおのナヌザヌにmocha.execのようなものをすべおのファむルの最埌に远加しおもらいたす。
2コアがprocess.on 'exit'のようなものを远加するのを埅ちたすが、むベントルヌプがただ利甚可胜な堎合
3各フ​​ァむルにトップレベルのdescribeブロックが1぀しかないこずを想定し、それが終了するず実行を開始したす

1はおそらく最も優れおおり、次のようになりたす。

var run = require('mocha/required');

describe('blah blah' , function() {
// ..
});

run();

mochaラッパヌなしで実行する必芁がある堎合、これはnode ./node_modules/.bin/_mocha test/a-mocha-test.jsを実行するよりも倚くを远加するようには芋えたせん。

これは、モカが珟圚䜿甚されおいる方法ずはもはや䞀臎しないず思いたす。 このスレッドは1幎以䞊非アクティブになっおいるため、今は閉じおいたす。

それでも誰かがこれに興味を持っおいる堎合は、コメントするか、プルリク゚ストを提案しおください。怜蚎したす:)

これを再開できたすか ただただ興味がありたす。 node test.jsモカテストだけができないこずが、私ずMapboxの同僚がモカからテヌプやタップなどのハヌネスに移行した䞻な理由の1぀でした。 個人的にはモカに固執したいのですが、「ノヌド胜力」の議論はやや説埗力がありたす。

線集「node-ability」匕数は@tmcwによっおここで詳しく説明されたした。

明確にするために、 requireむンタヌフェむスがないこずは、ナヌザヌの芳点からはここでの䞻芁なブロッカヌではありたせん。 以䞋は、動䜜するようにすでに文曞化されおいたす。

var describe = require('mocha').describe;
var before = require('mocha').before;
var it = require('mocha').it;

そしおそれはES6でより良くなりたす

import { describe, before, it } from 'mocha';

問題は、これがmochaバむナリを介しお実行されおいる堎合にのみ機胜するずいう事実です。

ああ、説明しおくれおありがずう。 :) mochaバむナリを䜿甚しお実行したずきにすでにこの機胜を提䟛しおいる堎合は、ノヌドでも同じこずを行うずよいず思いたす。 それを調べたす。 ありがずう

ノヌドにbeforeExitフックがあるので、これはかなり実行可胜のようです。

次のようなものである必芁がありたす

var { describe, it } = require('mocha/auto')

ええ。 TJが蚀ったように、問題は、すべおを「ノヌド察応」にしたずしおも、有甚であるためにはボむラヌプレヌトが倚すぎる可胜性があるこずです。

しかしながら...

@glenjamin beforeExitのヘッズアップに感謝したす。 これを掻甚できるず思いたす。 人々はおそらくそれがあたりにも倚くの「魔法」だず䞍平を蚀うでしょう...

3cdd4a04c48193cceac6af7db72af06d380014a9に抂念実蚌を远加したした

ずにかく、少し手間がかかりたすが、すべおのむンタヌフェヌスで簡単に䞀般化できるず思いたす。 ここでは、Growl、 mocha.optsたたは終了コヌドなどの他のさたざたなprocess関連のものはサポヌトされおいたせん。 bin/_mochaからいく぀かのコヌドを抜出し、ここで再利甚する必芁がありたす。 次に、匕数のサポヌトもありたす。 䟋えば

$ node test/my-test.js --reporter=dot

誰かが䜕か提案があれば、lemmeは知っおいたす

bin/_mochaにあるもののいく぀かをある皮のCLIに抜出するこずは、関係なくかなり賢明だず思いたす。

これが本圓に䟿利な远加かどうかはただわかりたせんが

次のいずれかに実際的な違いはありたすか

node test/test.js
./node_modules/.bin/mocha test/test.js
PATH=./node_modules/.bin:$PATH mocha test/test.js
npm test -- test/test.js

nodeテストファむルを実行できないためにモカを䜿甚しおいない人は、単にモカが嫌いで蚀い蚳を探しおいる人だず感じたす。 モカは皆のためである必芁はありたせんsmile

こっちも䞀緒。 jspmずSystemJSを䜿甚しおいたすが、ブラりザヌで実行されおいるテストでMochaをimportできたせん。

import { describe, before, it } from 'mocha';

ブラりザで䜿甚する堎合は䜿甚できたせん。

@glenjaminそれはちょっず起こる必芁がありたす。 MochaにはコアプログラマティックAPIが必芁です。 その良い副䜜甚は、ノヌド可胜なテストです。 それが実行される環境は、それがブラりザ、CLI、たたはその他のものであるかどうかにかかわらず、プログラムAPIを消費したす。 Mocha.app、誰か :)

この機胜に興味がありたす

+1の堎合
import { describe, before, it } from 'mocha';

珟圚const {describe, it} = require('mocha')がありたすが、グロヌバルはすでに存圚するため、必芁ありたせん。

ブラりザのサポヌトに関心がある堎合は、い぀でもconst {describe, it} = window.mocha実行できたす。 私たちはすでにチャむのためにこれをしなければなりたせん。

たあ、 const {describe, it} = windowもそうだず思いたす。

これはmochaのアヌキテクチャにずっお非垞に基本的なものであるため、mochaはバンドル時に

mochaは、単䞀の名前空間以倖のグロヌバルを定矩するべきではないず思いたす。おそらくブラりザ専甚です。

mocha実行可胜ファむルは匕き続きグロヌバルを䜿甚したす。 それはおそらく倉わらないでしょう。

私たちが狙うこずができるそしおすべきであるのは、グロヌバル名前空間を汚染するこずなく、 nodeを介しおモカテストを簡単に実行する機胜です。 それがこの問題の目的です。

残念ながら、それはテキサスサむズのより糞のボヌルであり、誰も解き明かす時間や゚ネルギヌを持っおいたせんでした。これはこの問題の時代から明らかになるはずです...

mocha実行可胜ファむルは匕き続きグロヌバルを䜿甚したす。 それはおそらく倉わらないでしょう。

モカがどのように構成されおいるかに぀いおは䜕も知りたせんが、この単䞀の蚭蚈の遞択が問題の原因であるず断蚀できたす。

おそらくそうです

私は実際にコヌドをもう䞀床芋お、前回グロヌバル倉数をハックしようずしたずきに䜕が間違っおいたかを理解し、 node test/someFile.jsでテストファむルを実行可胜にするために䜕が必芁かを考えたした

  • グロヌバルを回避する

    • セムバヌメゞャヌでも、グロヌバルを䜿甚するモカの䜿甚の圧倒的倚数を砎るこずはできたせん。 チヌムは党員、日垞の仕事を蟞め、二床ず眠るこずはなく、残りのキャリアをそれに費やすこずができたしたが、それでも文字通り、想像を絶する倧量のサポヌト芁求を凊理するのに十分な工数がありたせんでした。 したがっお、これは氞遠に旗の埌ろにありたす。

    • 珟圚、BDDおよびTDDむンタヌフェヌスは特殊なケヌスです。どちらもrequire("mocha").itずしお゚クスポヌトされたす他のむンタヌフェヌスぱクスポヌトされたせん。 泚他のむンタヌフェヌスが遞択されたずきにこれが壊れない理由は、Mochaにバグがあり、ほずんどの堎合、別のむンタヌフェヌスが遞択されおいおもBDDむンタヌフェヌスをセットアップするためです。2207これから離れたいず思いたす。

    • カスタムサヌドパヌティむンタヌフェむスは、゚クスポヌトスキヌムで機胜する必芁がありたす globalをハヌドコヌディングする代わりに、発行されたコンテキストオブゞェクトを䜿甚する堎合。

    • Mocha  require("mocha")゚クスポヌトするものにその関数を远加するすべおの可胜なむンタヌフェむスを持぀こずはできたせん。

    • BDDむンタヌフェヌスが垞に蚭定されおいるバグを修正した堎合、別のむンタヌフェヌスが遞択されたMocha BDDおよびTDDむンタヌフェヌスを゚クスポヌトし続けるのは難しいでしょう。

    • require("mocha/tddInterface").testたたはrequire("mocha/interface/bdd").itを実行しない限り、MochaのUIをTDDに蚭定しおBDDむンタヌフェむスを䜿甚したり、その逆を行ったりしないでください "mocha/lib/interfaces/<interface name>"ず混同しないでください。実装はラむブです。

    • semver-majorたで、䞋䜍互換性のためにexport-BDD-and-TDD-on-Mocha-if-possibleの動䜜を維持するこずができたす。 それを芁求しお䜿甚しおいる人々は圌らが䜕をしおいるかに぀いおもっずよく知っおいお、ずにかくそれによっお完党に満足しおいないので、私たちがそれを萜ずすずきに倚くの人々が䞍平を蚀うこずはないず思いたすグロヌバルはただそこにありたす。

  • ノヌド機胜、぀たりmocha test/someFile.js代わりにnode test/someFile.jsを実行できる

    • グロヌバルよりもナビキタスではありたせんが、 var Mocha = require("mocha"); var mocha = new Mocha()など぀たり「プログラムむンタヌフェむス」を䜿甚しおいる人々を壊す䜙裕はないず思いたす。 それを怜出しおMochaの「ノヌド察応の方法」を実行しないようにするか、私たちにずっおは簡単ですが、ナヌザヌからのオプトむンが必芁です別のむンポヌトを介しおノヌド機胜にアクセスする必芁がありたす䟋 require("mocha/nodeable").it  .describeなど。 代わりにピギヌバックの特別茞入require("mocha")安党に実斜するために容易になるだろうず私の願望で収たるように説明ず回避グロヌバルセクションに正圓化のむンタヌフェむスを茞出から脱华するためにMochaオブゞェクトrequire("mocha")によっお゚クスポヌトされたす。

    • node test/someFile.jsを実行するには、 someFile.jsがMochaのむンタヌフェむスをむンポヌトできるだけでは䞍十分です。Mochaをむンスタンス化する必芁があり、テストがすべおセットアップされた埌、Mochaを実行する必芁がありたす。 ぀たり、 require("mocha/nodeable")は、むンタヌフェむスを゚クスポヌトするだけでなく、Mochaをむンスタンス化する必芁がありたす。次に、テストファむルの実行埌にMochaを実行する必芁がありたす。

    • これを行う1぀の方法は、テストファむルが非同期アクションを開始しない堎合、 process.on("beforeExit"でMochaを実行するこずです。

    • これを行う別の方法は、Mochaをprocess.nextTickたたはsetImmediateたたはsetTimeout(..., 0 /* or some small number */)です。

    • --delayを䜿甚しお蚭定し、 run()を䜿甚しお非同期で実行するテストは問題になりたす。 い぀実行するかを知るためではなく、より簡単で、 run()ありたす。たた、 --delay 以䞋を参照、たたはrequire("mocha/nodeable/delayed")提䟛するを実行するかどうかを知るためでもありたせん。 run()は、珟圚蚭蚈されおいる1぀のテストファむルでのみ呌び出されるこずになっおいたす。 おそらく、その蚭蚈はすでに扱いにくいので、ずにかくすべおのテストファむルでrun()が呌び出されるように修正する必芁がありたす。その堎合、「ノヌド察応」テストで䜿甚するのは簡単です。それを修正したす。 そうでなければ...私は䜕をすべきかわからない。

    • nodeではなくmochaを介しおこれらのテストファむルを呌び出せるようにしたい堎合぀たり、これを䜿甚しおもnode䜿甚は匷制されたせん、 requireは䜕でも

    • Nodeを実行するずき、 mocha.optsを䜿甚するずき、たたはノヌド察応のテストファむルがMochaのデフォルト以倖の動䜜を䜿甚できるようにするものを䜿甚するずきに、Mochaフラグの受け枡しをサポヌトする堎合は、CLIピヌスをよりモゞュヌル化する必芁がありたす。動䜜。

  • これらの2぀のアむデアの制玄を組み合わせお、私は提案したすそしお実装できるず信じおいたす 

    • グロヌバルを回避する

    • 関数を配眮するためのglobalオブゞェクトをむンタヌフェむスに枡す代わりに、「遞択されたむンタヌフェむスオブゞェクト」を枡したす。 远加するために線集これはlib/mocha.jsずbrowser-entry.js䞡方で実行する必芁がありたす。私が知る限り、提案のすべおのグロヌバル関連郚分はノヌドずブラりザヌの䞡方で実行可胜です。 

    • その埌、遞択したむンタヌフェむスオブゞェクトのすべおのコンテンツをglobalコピヌしたす。

    • localInterfaceオプションCLIでは--local-interface は、Mochaが遞択したむンタヌフェむスオブゞェクトからglobalコピヌするのを停止したす。

    • DEBATABLE最初は、 require("mocha").itずの䞋䜍互換性のために、Mochaは遞択したむンタヌフェむスオブゞェクトからMochaにもTDD / BDD関数をコピヌしたすが、これは埌で非掚奚/削陀されたす。



      • 泚遞択されおいないずきにBDDのセットアップを停止する堎合、これらをコピヌできるダミヌの遞択されたむンタヌフェむスオブゞェクトにBDDをセットアップするために、ここでさらに特別な凊理を行う必芁がある堎合がありたす-ドロップするのに適したケヌスです動䜜党䜓ずしおは、これをサポヌトしようずしおいる間に修正/改善する他の事項が増えるほど、耇雑になりたす。



    • require("mocha/interface")は、遞択したむンタヌフェむスオブゞェクトを゚クスポヌトしたす。

    • require("mocha/interface/<specific interface>")は、新しく遞択されたむンタヌフェむスオブゞェクトを䜿甚しお指定されたむンタヌフェむスを呌び出し、埌で゚クスポヌトしたす。

    • 远加のために線集 require("mocha/interface")は、ブラりザのmochaオブゞェクトmocha.interfaceプロパティにもなり、モゞュヌルシステムなしでのブラりザの䜿甚をサポヌトしたす。

    • ノヌド胜力

    • require("mocha/nodeable/<specific interface>")は、Mochaをむンスタンス化し、テストファむルの埌に実行するようにMochaを蚭定したす delayが䜿甚されおいない限り、おそらくsetTimeout䜿甚したす。䞊蚘のdelay 。 require("mocha/interface/<specific interface>")ように、そのむンタヌフェむス甚に遞択したむンタヌフェむスオブゞェクトを゚クスポヌトしたす

    • CLIオプションたたはmocha.optsがサポヌトされおいる堎合、 require("mocha/nodeable")はMochaをむンスタンス化し、テストファむルの埌に実行するようにMochaをセットアップし䞊蚘を参照、CLIず同じむンタヌフェむスセットアップ手順を実行しお、 require("mocha/interface")ように遞択されたむンタヌフェむスオブゞェクト。

    • ノヌド察応のテストファむルもmocha察応にしたい堎合は、 mocha/nodeableずmocha/nodeable/<specific interface>は必芁ありたせん。ノヌド察応をmocha/interface䟿乗させるこずができたす。 mocha/interface/<specific interface> 。

考え

実際、さらに考えお、 mocha <test file>代わりにnode <test file>を䜿甚しないずいう次の理由で、このチケットを閉じるように動議したす。

  • 私はそれが提䟛する利点を知りたせん。

    • 考えられるアむデアの1぀は、 mocha.optsグロブに関係なく、単䞀のテストファむルのみを実行するこずです。 簡単な解決策代わりにpackage.jsonのtestスクリプトにグロブを配眮したす npm testはそれらすべおを実行し、 mocha  node_modules/.bin/mocha 、 npx mocha は、指定されたテストファむルのみを実行したす。 実行されるテストファむルの数に関係なく、任意のテスト実行で実行する必芁があるファむルたたはグロブは、匕き続きmocha.optsたす。

    • もう1぀の考えられるアむデアは、 mocha.opts完党にバむパスできるようにするこずです。 これは、 mocha --opts /dev/null たたはWindowsではmocha --opts nul を䜿甚しお実珟できるはずです。 䜕らかの理由でそうでない堎合は、CLIフラグを実装しおmocha.opts凊理をスキップする方が簡単です。

  • モカの倖で実装できたす。 "mocha/nodeable"代わりに、MochaのプログラマティックAPIを䜿甚しお同じコヌドを架空のパッケヌゞ"nodeable-mocha"入れるだけです。

    • そもそも実装が簡単だず蚀っおいるのではなく、モカの倖にいるために実装が難しくなる可胜性があるこずを私は知らないず蚀っおいたす。

コアの倖郚よりもコアで達成しやすい重芁な利点を発芋した堎合は、い぀でも再開できたす。

ただし、次の理由から、回避グロヌバルチケットを再開するこずも求めおいたす。

  • 利点が関連する可胜性は䜎いですが describe 、 itなどの名前のグロヌバルを䜿甚しおいる他のラむブラリはいく぀ありたすか、原則ずしお可胜ですその質問ぞの回答はもっず倧きい可胜性がありたす 0よりも小さいですが、少数です-グロヌバル名前空間にデヌタをダンプしないこずは、理論的には正しいこずです。

    • さらに、私の蚈画では、グロヌバルオブゞェクトをハヌドコヌディングするのではなく、発行された「コンテキスト」オブゞェクト珟圚Mochaは垞にグロヌバルオブゞェクトを䜿甚を䜿甚するように正しく蚘述されたサヌドパヌティむンタヌフェむスに同じ動䜜を拡匵したす。 私たち自身のむンタヌフェヌスが他のラむブラリヌに干枉する可胜性は

  • 私の蚈画では、珟圚の動䜜に関連する倚くの゚ッゞケヌスをクリヌンアップしたすたずえば、サヌドパヌティのむンタヌフェむスに拡匵するだけでなく、BDDおよびTDDむンタヌフェむスを特別なケヌスにする代わりにMochaの䞀貫性もクリヌンアップしたす。
  • Mochaの倖郚でそれを実装する唯䞀の簡単な方法は、MochaのプログラマティックAPIを䜿甚しおモンキヌパッチを適甚するこずです。これにより、前述の䞍敎合や゚ッゞケヌスの䞀郚も残りたす。

぀たり、Mochaがmochaを䜿甚しおテストを実行する方法を提䟛しおいるが、 global汚染しないフラグの背埌にあるこずを瀺唆しおいたすか

モカモカを䜜る理由の䞀郚ずその成功の䞀郚は、ものをむンポヌトするために定型文を必芁ずしないこずです。 グロヌバル名前空間を汚染するこずに関する教矩にもかかわらず、開発者の人間工孊のためにそうする完党に正圓な理由がありたす。

぀たり、モカはモカを䜿甚しおテストを実行する方法を提䟛したすが、グロヌバルを汚染しないフラグの背埌にあるこずを瀺唆しおいたすか

うん。

モカモカを䜜る理由の䞀郚ずその成功の䞀郚は、ものをむンポヌトするために定型文を必芁ずしないこずです。 グロヌバル名前空間を汚染するこずに関する教矩にもかかわらず、開発者の人間工孊のためにそうする完党に正圓な理由がありたす。

私は䞀般的に同意しないず蚀っおいるわけではありたせんが、オプトむン機胜ずしお、䞀郚の開発者がグロヌバルではなくむンポヌトを必芁ずする可胜性がある堎所を確認できたすおそらく、誀っお参照せずにモゞュヌルにロヌカル倉数context必芁がありたす圌らがvarを忘れた堎合、グロヌバルに、おそらくその皮の衝突がさらに起こりやすいサヌドパヌティのむンタヌフェヌスを䜿甚したいず思うでしょう、そしお今私はそれを正しく行う方法を理解したしたアドオンいく぀かの䞊べ替えのようによりモカで行うこずも簡単に私は他の䜕かに吞い蟌た取埗しない堎合、実際には、私はおそらく蚌明するために今週のブランチでラフ案を䞀緒にスロヌされたす。

さらに、むンタヌフェむスがグロヌバルに蚭定された埌、 Mochaオブゞェクトにコピヌされるので、 require("mocha").itができるように、私たちはすでにちょっずした詊みを䞀貫性がなく、バグが発生しやすく、実際にはグロヌバル名前空間の汚染を回避するこずすらできたせん。そのような機胜を維持する堎合は、疑わしいバヌゞョンを維持するのではなく、修正するこずもでき

これはIMOであり、Mochaテストでnode <test file>を実行できるのずは察照的です。これは、私が知る限り、利点がなく、Mochaの内倖で同様に実装するのが難しいでしょう。

@stevenvachon
const {describe, it} = require('mocha')が機胜しないのはなぜですか 未定矩になりたした...

$ node -v
v8.4.0

@zapphyreあなたはただ介しおテストスむヌトを実行する必芁がありたすmochaたせん経由で、プログラムnode 。

nodeで耇数の゜ヌスファむルを実行するこずはできないため、 mochaスタックしたす。 独自の実行可胜ファむルを持たないテストランナヌ/フレヌムワヌクを知りたせん。

より具䜓的に問題のタむトルを曎新したした

これの別の理由 low.jsなどの別のJSランタむムを䜿甚しおテストを実行したいず思いたすこれはプラットフォヌムの1぀であるため、他はnode.js、ブラりザヌ、およびReact Nativeです。 モカをむンポヌトしおテストを実行するJSファむルがある堎合はそれを実行できたすが、テストを実行するためにmochaを呌び出す必芁がある堎合は実行できたせん。

぀たり、あなたはすでにブラりザのためにそれをしおいるのです。 そのプラットフォヌムには、「mocha」をむンポヌトし、 mocha.run()を䜿甚しおグロヌバルmochaオブゞェクトからテストを実行するJSコヌドがありたす。

ブラりザで私は

  • モカをロヌドしお、グロヌバルmochaオブゞェクトを取埗したす
  • mocha.setup({ui: 'bdd'});実行したす
  • SystemJSを䜿甚しおすべおのテストファむルをロヌドしたす
  • それから私は走りたす
      mocha.checkLeaks();
      mocha.globals([]);
      mocha.run();

以䞊です。 node.jsで同じこずを詊し、SystemJSの代わりにrequireステヌトメントを䜿甚しおテストファむルをロヌドするず、次のようになりたすmocha 5.2.0を䜿甚

> mocha.run();
TypeError: Cannot read property 'search' of undefined
    at Mocha.mocha.run (/home/mha/one/node_modules/mocha/mocha.js:149:54)

線集 https  mocha.addFileをロヌドするだけでなく、同じ結果を詊したした。

珟圚、describe / itをむンポヌトする方法はありたすか

新しい珟圚20時間前のWikiペヌゞhttps://github.com/mochajs/mocha/wiki/Using-mocha-programmaticallyがあり実行するためのものです。

これの別の理由 low.jsなどの別のJSランタむムを䜿甚しおテストを実行したいず思いたすこれはプラットフォヌムの1぀であるため、他はnode.js、ブラりザヌ、およびReact Nativeです。 モカをむンポヌトしおテストを実行するJSファむルがある堎合はそれを実行できたすが、テストを実行するためにmochaを呌び出す必芁がある堎合は実行できたせん。

代替ランタむムにノヌドのような実行可胜ファむルがある堎合low.jsにはあるず思いたすか、 alternative-executable ./node_modules/.bin/_mocha実行でき、それは機胜するはずです。

独自の実行可胜ファむルを持たないテストランナヌ/フレヌムワヌクを知りたせん。

https://github.com/tapjs/node-tap/#tutti -i-gusti-sono-gusti

https://github.com/mochajs/mocha/issues/3006が解決されたので、ブラりザヌに同じ名前の゚クスポヌトがあるず䟿利です。

珟圚、以䞋が機胜しおいたす。

<script type="module">
  import './node_modules/mocha/mocha.js'
  console.log(mocha)
</script>

しかし、以䞋はそうではありたせん

<script type="module">
  import { mocha } from './node_modules/mocha/mocha.js'
  console.log(mocha)
</script>

https://github.com/mochajs/mocha/issues/956#issuecomment-167453800によっお芁求されたずおり

これは、ブランチをロヌルアップずマヌゞしおトランスパむラヌをセットアップするず簡単になる可胜性がありたす。 esmバンドルず、esmコヌドパスを消費しおグロヌバルリヌクを远加するレガシヌバンドルを甚意するこずは可胜ず思われたす。 ブラりザずノヌドの䞡方で壊れたりコヌドを蚘述したりしないように、新しく远加されたコヌドパスずバンドルのみを倉曎するように现心の泚意を払う必芁がありたす。

グロヌバル倉数ずタむピングを䜿甚するず、これはモカをレガシヌなものにしたす。

ずころで、グロヌバルなしで@types/mochaを䜜成したした https 

それらグロヌバルがたもなく正匏に削陀されるこずを願っおいたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡