タグ付けされた質問 「mocha」

Mocha.jsは、Node.jsとブラウザーで実行される機能豊富なJavaScriptテストフレームワークです。

8
NodeJS UnhandledPromiseRejectionWarning
そこで、イベントエミッターに依存するコンポーネントをテストしています。そうするために、私はMocha + ChaiでPromisesを使用するソリューションを思いつきました。 it('should transition with the correct event', (done) => { const cFSM = new CharacterFSM({}, emitter, transitions); let timeout = null; let resolved = false; new Promise((resolve, reject) => { emitter.once('action', resolve); emitter.emit('done', {}); timeout = setTimeout(() => { if (!resolved) { reject('Timedout!'); } clearTimeout(timeout); }, 100); }).then((state) …

9
mochaとnode.jsによるプライベート関数の単体テスト
node.js用に作成されたアプリケーションを単体テストするためにモカを使用しています モジュールにエクスポートされていない関数を単体テストすることは可能ですか? 例: 私はこのように定義された多くの関数を持っています foobar.js function private_foobar1(){ ... } function private_foobar2(){ ... } パブリックとしてエクスポートされたいくつかの関数: exports.public_foobar3 = function(){ ... } テストケースは次のように構成されています。 describe("private_foobar1", function() { it("should do stuff", function(done) { var stuff = foobar.private_foobar1(filter); should(stuff).be.ok; should(stuff)..... private_foobar1はエクスポートされないため、明らかにこれは機能しません。 プライベートメソッドを単体テストする正しい方法は何ですか?モカにはそれを行うためのいくつかの組み込みメソッドがありますか?

5
テスト用にExpressJSのインスタンスをプログラムでシャットダウンするにはどうすればよいですか?
Expressのインスタンスをシャットダウンする方法を理解しようとしています。基本的に、私はの逆が欲しい.listen(port)呼び出し -Expressサーバーにリスニングを停止させ、ポートを解放し、きれいにシャットダウンするにはどうすればよいですか? これは奇妙なクエリのように思えるので、ここにコンテキストがあります。多分これにアプローチする別の方法があり、私はそれを間違った方法で考えています。私のsocket.io/nodejsアプリのテストフレームワークをセットアップしようとしています。これは単一ページのアプリなので、テストスクリプトでは( Mocha、しかしそれは重要ではありません)サーバーを起動し、テストを実行してサーバーをシャットダウンできるようにしたいと考えています。テストを開始する前にサーバーの電源がオンになっていると想定するか、テストの1つでサーバーを開始し、後続のすべてのテストでサーバーが稼働していると想定することで、これを回避できますが、それは本当に厄介です。各テストファイルで適切な設定でサーバーインスタンスを起動し、テストが終了したらそのインスタンスをシャットダウンすることをお勧めします。つまり、テストを実行するのに奇妙な依存関係はなく、すべてがクリーンです。また、起動/シャットダウンテストを実行できることも意味します。 これを行う方法についてのアドバイスはありますか?私はそれをダウンさせるために手動で例外をトリガーすることを考えましたが、それは面倒そうです。Expressのドキュメントとソースを調べましたが、サーバーをシャットダウンする方法を見つけることができません。このためのsocket.ioにも何かがあるかもしれませんが、ソケットサーバーはExpressサーバーに接続されているだけなので、これはExpressレイヤーで行う必要があると思います。

4
Mochaを使用したJavaScriptのテスト-console.logを使用してテストをデバッグするにはどうすればよいですか?
私はjavascript test-runner "Mocha"を使用しています。 失敗したテストがあるので、を使用してデバッグしconsole.logます。 しかし、テストが実行されても、出力はありません(Mochaからのテスト結果のみ)。Mochaが私のconsole.log出力をキャプチャして抑制したようです! Mochaに出力を表示させるにはどうすればよいですか?(失敗したテストの場合)? 編集: 大変お詫びします!— console.logテスト中に動作します!私はそれが出力を抑制することを期待していたに違いなく、自分のコードを適切にチェックしませんでした。ご返信いただきありがとうございます。それで...言われていること...多分実際に合格したテストの出力を抑制するのは良いことでしょうか?うーん... 関連するメモ:console.logEclipseデバッガーをnode.jsに接続するのに多くの問題を抱えているので、使用したいと思います。 これが難しいと思うのは私だけですか?どうやってnode.jsをデバッグしますか?デバッガを使って、それともconsole.logステートメントを使って?

6
Mocha API Testing:「TypeError:app.address is not a function」を取得する
私の問題 私は非常に単純なCRUDのAPIをコード化されていると私は最近、使用しても、いくつかのテストをコーディングを開始しましたchaiし、chai-httpしかし、と私のテストを実行しているとき、私は問題を抱えています$ mocha。 テストを実行すると、シェルで次のエラーが発生します。 TypeError: app.address is not a function 私のコード これが私のテストのサンプルです(/tests/server-test.js): var chai = require('chai'); var mongoose = require('mongoose'); var chaiHttp = require('chai-http'); var server = require('../server/app'); // my express app var should = chai.should(); var testUtils = require('./test-utils'); chai.use(chaiHttp); describe('API Tests', function() { before(function() { mongoose.createConnection('mongodb://localhost/bot-test', myOptionsObj); }); …


6
JavaScript標準スタイルはモカを認識しません
私が持っているモカ、このようになりますことをテストファイルを: var expect = require('chai').expect var muting = require('../muting') describe('muting', function () { describe('init()', function () { it('should inject an object into twitter', function () { var twitter = 'twitter' muting.init(twitter) expect(muting.twitter).to.equal(twitter) }) }) }) mochaCLIから実行すると、テストは正常に実行されます。 私は実行するとstandard(のための実行可能なJavaScriptの標準スタイル)私はそうのようなモカのフレームワーク機能にエラーが発生します: standard: Use JavaScript Standard Style (https://github.com/feross/standard) c:\..\test\index.js:5:0: 'describe' is not defined. c:\..\test\index.js:6:2: 'describe' …
94 javascript  mocha 

17
モカテスト実行時のバベルの予期しないトークンのインポート
.babelrcに適切なプリセット(es2015)を含めるなど、他の関連する質問で提供されるソリューションは、すでに私のプロジェクトに実装されています。 ES6モジュールの構文を使用する2つのプロジェクト(AとBと呼ぶことにします)があります。プロジェクトAでは、npmを介してインストールされ、node_modulesフォルダーにあるプロジェクトBをインポートしています。プロジェクトAのテストスイートを実行すると、エラーが発生します。 SyntaxError:予期しないトークンのインポート これの前に、プロジェクトBからのこの誤ったコード行が申し立てられています。 (function(exports、require、module、__filename、__dirname){import createBrowserHistory from 'history / lib / createBrowserHistory'; ソースファイルに「create createBrowserHistory from 'history / lib / createBrowserHistory」のみが含まれているため、iifeはnpmに関連している可能性があります。または、プロジェクトBの依存関係としてプロジェクトBを削除すると、プロジェクトBのテストスイートのユニットテストは正常に実行されます。プロジェクトA、私のテストスイート(内部プロジェクトモジュールに引き続きes6インポートを使用)は問題なく動作します。 完全なスタックトレース: SyntaxError: Unexpected token import at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:374:25) at Module._extensions..js (module.js:405:10) at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:138:7) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Module.require (module.js:354:17) at …

1
MochaでのJavascriptテストにおけるassert.equalとassert.deepEqualの違いは?
Mochaを使用して、Express.jsアプリケーションの小さなモジュールをテストしています。このモジュールでは、関数の1つが配列を返します。配列が特定の入力に対して正しいかどうかをテストしたいと思います。私はこのようにしています: suite('getWords', function(){ test("getWords should return list of numbers", function() { var result = ['555', '867', '5309']; assert.equal(result, getWords('555-867-5309')); }); }); これが実行されると、次のアサーションエラーが発生します。 AssertionError: ["555","867","5309"] == ["555","867","5309"] ただし、テストをに変更するassert.deepEqualと、テストは問題なくパスします。==vsの場合かと思っていたのですが、===入ると [1,2,3] === [1,2,3] node.jsコマンドラインに、まだfalseが表示されます。 なぜ配列は他の値のように比較しないのですか(例1 == 1)?そしてassert.equalとassert.deepEqualの違いは何ですか?

1
`before()`と `beforeEach()`の違いは何ですか?
特に違いは何であるモカさんbefore()とはbeforeEach()?(同じもののための質問after()とafterEach()。) ブロックbefore()ごとに1回実行し、テスト(ブロック)ごとに1回実行すると仮定します。本当?describe()beforeEach()it() そして、いつ私はどちらか一方を使用することを選択しますか?

4
Node.jsテストモジュールであるMochaをどのようにインストールして実行しますか?インストール後に「mocha:コマンドが見つかりません」を取得する
Mochaを期待どおりに動作させるのに問題があり、ドキュメントにあるとおりに言いたいのですが、実際に動作させるためのドキュメントはあまりありません(表示されます)。 npm(グローバルとローカルの両方で)を使用してインストールしました。実行するたびに、次のようになります。 $ mocha mocha: command not found わかりましたので、私のにはないPATHので、直接実行してみました $ ./node_modules/mocha/bin/mocha execvp(): No such file or directory 最後に、他のbinファイルを叩いてみたところ、 $ ./node_modules/mocha/bin/_mocha path.existsSync is deprecated. It is now called `fs.existsSync`. . ✔ 1 tests complete (1ms) 単一のコマンドでテストを実行するにはどうすればよいですか?誓いはあなたを許しているようですが、私はモカがより良い選択であると聞きました、私はそれを正しく機能させるようには思えません。 そして、私が3回目の試みで上に出たエラーについて何か考えはありますか? 編集: 私は走っています、 Ubuntu 11.10 64ビット Node.js 0.7.5 npm 1.1.8 モカ0.14.1 0.6.0にする必要があります
89 node.js  mocha 

2
mocha before()の非同期関数は常にit()仕様の前に終了していますか?
before()データベースをクリーンアップするためのコールバック関数があります。すべてが開始before()前に完了することが保証されていit()ますか? before(function(){ db.collection('user').remove({}, function(res){}); // is it guaranteed to finish before it()? }); it('test spec', function(done){ // do the test }); after(function(){ });

6
mocha.jsを使用して複数のファイルからテストを結合する
複数のファイルからのすべてのテストを1つのファイルに結合しようとしています。次のようになります。 describe('Controllers', function() { describe('messages.js', function() { require('./controllertests/messages').test(options); }) describe('users.js', function() { require('./controllertests/users').test(options); }) }) 私はこれがテストに参加するための最良の方法ではないと確信しています、私はこれを行う方法の例を見つけるのにいくつかの困難があります:s


10
追加のオプションまたはパラメーターを使用したMochaテスト
Mochaを使用してNode.jsアプリケーションのテストケースを作成しています。テストケースには、追加の入力オプションまたはパラメーターとしてAPIキーが必要です。APIキーは秘密であるため、GitHubで誰でも見ることができるため、テストファイルに直接含めたくありません。私はモカのために利用可能ないくつかのオプションがあることを知っています: http://mochajs.org/#usage しかし、テスターがコマンドラインでテスト用の独自のAPIキーを指定できるように、いくつかのパラメーターを含めることは可能ですか?といった: ./node_modules/mocha/bin/mocha test/*.js --key YOUR_KEY
83 node.js  mocha 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.