Node.jsで使用するのに最適なテストフレームワークは何ですか?[閉まっている]


130

私はhttps://github.com/ry/node/wiki/modules#testingでテストフレームワークのかなり長いリストを見てきました。これらのフレームワークでの経験は何ですか?

ブラウザーで実行できることは明らかですが、私は主にNode.jsに関心があります。非常に非同期の傾斜のあるものがいいでしょう。

回答:


70

更新:

私の意見ではモカが一番です。


これらのフレームワークでの経験は何ですか?

私はテストカバレッジもあるかなりクールなテストフレームワークであるexpressoで遊んだ。これは、Express.jsの作成者でもあるTJ Holowaychukによって作成されました(非常に高速な(そして小さい)サーバー側JavaScript Web開発フレームワークで、Node.jsとConnectをベースに構築されています)。私は最近、彼がshould.jsと呼ばれるクールなライブラリを持っていることを知りました。これは、より良いテスト体験のためにExpressoと一緒に使用できます。

明らかに、ブラウザで実行する機能は大きなボーナスになります

ブラウザーで実行できるとは思わないが、ブラウザー内で実行したい理由もわかりません。

しかし、私は主にNode.jsに興味があります。非常に非同期の傾斜のあるものがいいでしょう。

エスプレッソからの引用:

各コールバックに渡される引数はbeforeExitです。これは通常、コールバックが呼び出されたことを表明するために使用されます。

beforeExitを使用して、非同期関数をテストできます。


ヒント:非常に優れたオープンソースコードを作成しているため、GitHubTJ Holowaychukをフォローしてください。


返事をありがとう、私はexpressoを試してみましたが、非同期サポートはあまり直感的ではないことがわかりました。(とにかく私のために)
doffm 2010年

3
私は現在、理解しやすい誓約(vowsjs.org)を試しています。
doffm 2010年

vowjsも素晴らしいテストフレームワークのように見えました。expressoのテストカバレッジ機能が気に入っています。さらに、私はあなたが理解していないことを疑問に思いますか?
Alfred

4
あなたは今モカを好むと言いますが、なぜですか?
ジョナサンアーケル

やってみなよ。モカはすべてを持っています:)。ブラウザのサポート、コードカバレッジも。名前はモカにある!
アルフレッド

40

私は非同期BDDフレームワーク(Behaviour Driven Development)を使用するのが簡単なVowsJSを使用して、仕事成し遂げました。

私が最近見たものから、それは多くの人がNPMモジュールをテストするために選択したものであるため、これまでのところ、これは使用するのが最善の方法の1つだと思います。

NodeJSで使用できるいくつかの一般的なテストフレームワークも以下のものです。

また、JavaScriptのテストフレームワークのリストを見ることができ、ここで

より良いコードを書くのを助けることができるより多くのライブラリはそれらです:

あり、竹CIサーバはによりアトラシアン、それはビルドとテストを自動化します。これは、Apache / Tomcat (Javaを使用しているため非常に重いため、SUXである)用のパッケージでもあり、無料ではありませんが、10ドルのスターターライセンスがあるため、手頃な価格だと思います。これは、これまでに見つけたすべてのCIサーバーの中で最も機能があり、xUnitをサポートするすべてのユニットテストをサポートしています。つまり、Bambooで任意の言語のビルド/テストを実行できます。

NodeJSとCIのための別のオプションがあるトラビスそれが言うように多くの人々が、彼らのオープンソースプロジェクトに使用するAは、オープンソースコミュニティのための継続的インテグレーションサービスを開催しました。

Node JSプロジェクトの継続的インテグレーションとのGoogleグループディスカッションもあります。


6
Vowsの使用を検討している人への注記:2012年以来更新されていません
コードコマンダー

彼らは後にいくつかの変更を加えました。最終リリース:2015年9月
Andre Figueiredo

2020年にVowsの公式サイトで不正なゲートウェイを取得しました。おそらく死んでいますか?
リンカーン

すごい、バディ、それから何年もたった今、VowJSについて私が見つけることができるすべてはこれです:istavros.github.io/vowjsですが、残念ながら、2020年に使用することをお勧めすることはできません。代わりに、Mocha(mochajs.org)、Jasmin(jasmine.github.io)、Jest(jestjs.io)を確認することをお勧めします。
panosru

14

上記の質問者のコメントに基づいて、誓約を試してみたところ、非同期テストで発生していた多くの問題が解決しました。シリアルテストとパラレルテストを混在させる能力は素晴らしいです。

必ずガイダンスドキュメントを注意深くお読みください。ただし、慣れると、柔軟で強力になり、すばらしいクリーンな結果が得られます。

UPDATE:私はまた、チェックアウトする人々を励ますべきであるが、その主張するため。非常に柔軟で読みやすいアサートが可能で、ExpressoとVowsの両方、およびおそらく他のほとんどのテストフレームワークとも互換性があります。

(もし人々がアルフレッドの答えについてのコメントに気付かない場合に備えて、私はこれを別の答えとして投稿しています。)

2015年1月7日更新:それだけの価値があるので、私はVowsからMochaに、ShouldからChaiに切り替えました。Mochaは、Promiseを使用した非同期テストをより適切にサポートするようになり、Chaiはexpect、オブジェクトプロトタイプを変更したくない人のために、API を含むいくつかの柔軟なアサートオプションを許可しています。


1
shouldプロトタイプに名前が付けられshouldた列挙不可能なプロパティを追加しますObject。つまり、扱っているすべての値/オブジェクトは、テスト時と本番環境では少し異なって見えます。ほとんどの場合これはおそらく「うまくいく」でしょうが、組み込みのプロトタイプを変更することは原則として悪い考えです。テスト中にのみそれを行うのは間違っていると感じます。すべてが完全に行われているため、構文が優れています。
フロー

@flow v2以降、should拡張せずに簡単に使用できますObject.prototyperequire('should').noConflict()期待される代替手段として、should.jsを呼び出して使用してください。)
den bardadym

6

私はJavaScriptのテストにJasmineを使い始めました。それは、それが小さく、ブラウザーとノードの両方で実行されるためです。また、非常に堅固なレポートおよびマッチャーAPIも備えているため、将来、他のツールと簡単に統合できます。組み込みモックフレームワークは、ブラウザでTDDにqunitを使用していたときに最初に追加するものの1つであるため、便利です。


2

真のBDDフレームワークが必要な場合は、おそらくYaddaを検討してください。機能ファイルをサポートするために、モカ、ジャスミン、ノードユニット、qユニット、ゾンビ、カスパースと統合します。

   Scenario: provides the version of all services
      given service x is running
      and service y is running
      when I request the service versions
      then service x should be version 0.0.1
      and service y should be version 0.0.2

2

私はnodeunitを使用しており、非同期機能を操作するその機能はかなり簡単です。

彼のブログでnodeunitをすぐに使えるようにするための素晴らしいチュートリアルがあります。

[ 注: APIは、ブログ投稿から変更されている- setUp(callback)tearDown(callback)の両方のあなたのセットアップ/ティアダウンが完了したときに呼び出す必要が引数としてコールバックを取ります。]


これを見て、mongoose.js関数のいくつかのテストをexpressoで試した後、すべてのテストを並行して実行せず、setUpテストとtearDownテストを許可するというnodeunitの設定が役立つようです。
アスパラギノ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.