私はhttps://github.com/ry/node/wiki/modules#testingでテストフレームワークのかなり長いリストを見てきました。これらのフレームワークでの経験は何ですか?
ブラウザーで実行できることは明らかですが、私は主にNode.jsに関心があります。非常に非同期の傾斜のあるものがいいでしょう。
私はhttps://github.com/ry/node/wiki/modules#testingでテストフレームワークのかなり長いリストを見てきました。これらのフレームワークでの経験は何ですか?
ブラウザーで実行できることは明らかですが、私は主にNode.jsに関心があります。非常に非同期の傾斜のあるものがいいでしょう。
回答:
更新:
私の意見ではモカが一番です。
これらのフレームワークでの経験は何ですか?
私はテストカバレッジもあるかなりクールなテストフレームワークであるexpressoで遊んだ。これは、Express.jsの作成者でもあるTJ Holowaychukによって作成されました(非常に高速な(そして小さい)サーバー側JavaScript Web開発フレームワークで、Node.jsとConnectをベースに構築されています)。私は最近、彼がshould.jsと呼ばれるクールなライブラリを持っていることを知りました。これは、より良いテスト体験のためにExpressoと一緒に使用できます。
明らかに、ブラウザで実行する機能は大きなボーナスになります
ブラウザーで実行できるとは思わないが、ブラウザー内で実行したい理由もわかりません。
しかし、私は主にNode.jsに興味があります。非常に非同期の傾斜のあるものがいいでしょう。
エスプレッソからの引用:
各コールバックに渡される引数はbeforeExitです。これは通常、コールバックが呼び出されたことを表明するために使用されます。
beforeExitを使用して、非同期関数をテストできます。
ヒント:非常に優れたオープンソースコードを作成しているため、GitHubでTJ Holowaychukをフォローしてください。
私は非同期BDDフレームワーク(Behaviour Driven Development)を使用するのが簡単なVowsJSを使用して、仕事を成し遂げました。
私が最近見たものから、それは多くの人がNPMモジュールをテストするために選択したものであるため、これまでのところ、これは使用するのが最善の方法の1つだと思います。
NodeJSで使用できるいくつかの一般的なテストフレームワークも以下のものです。
また、JavaScriptのテストフレームワークのリストを見ることができ、ここで
より良いコードを書くのを助けることができるより多くのライブラリはそれらです:
あり、竹CIサーバはによりアトラシアン、それはビルドとテストを自動化します。これは、Apache / Tomcat (Javaを使用しているため非常に重いため、SUXである)用のパッケージでもあり、無料ではありませんが、10ドルのスターターライセンスがあるため、手頃な価格だと思います。これは、これまでに見つけたすべてのCIサーバーの中で最も機能があり、xUnitをサポートするすべてのユニットテストをサポートしています。つまり、Bambooで任意の言語のビルド/テストを実行できます。
NodeJSとCIのための別のオプションがあるトラビスそれが言うように多くの人々が、彼らのオープンソースプロジェクトに使用するAは、オープンソースコミュニティのための継続的インテグレーションサービスを開催しました。
Node JSプロジェクトの継続的インテグレーションとのGoogleグループディスカッションもあります。
上記の質問者のコメントに基づいて、誓約を試してみたところ、非同期テストで発生していた多くの問題が解決しました。シリアルテストとパラレルテストを混在させる能力は素晴らしいです。
必ずガイダンスドキュメントを注意深くお読みください。ただし、慣れると、柔軟で強力になり、すばらしいクリーンな結果が得られます。
UPDATE:私はまた、チェックアウトする人々を励ますべきであるが、その主張するため。非常に柔軟で読みやすいアサートが可能で、ExpressoとVowsの両方、およびおそらく他のほとんどのテストフレームワークとも互換性があります。
(もし人々がアルフレッドの答えについてのコメントに気付かない場合に備えて、私はこれを別の答えとして投稿しています。)
2015年1月7日更新:それだけの価値があるので、私はVowsからMochaに、ShouldからChaiに切り替えました。Mochaは、Promiseを使用した非同期テストをより適切にサポートするようになり、Chaiはexpect
、オブジェクトプロトタイプを変更したくない人のために、API を含むいくつかの柔軟なアサートオプションを許可しています。
should
プロトタイプに名前が付けられshould
た列挙不可能なプロパティを追加しますObject
。つまり、扱っているすべての値/オブジェクトは、テスト時と本番環境では少し異なって見えます。ほとんどの場合これはおそらく「うまくいく」でしょうが、組み込みのプロトタイプを変更することは原則として悪い考えです。テスト中にのみそれを行うのは間違っていると感じます。すべてが完全に行われているため、構文が優れています。
should
拡張せずに簡単に使用できますObject.prototype
(require('should').noConflict()
期待される代替手段として、should.jsを呼び出して使用してください。)
真の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
私はnodeunitを使用しており、非同期機能を操作するその機能はかなり簡単です。
彼のブログでnodeunitをすぐに使えるようにするための素晴らしいチュートリアルがあります。
[ 注: APIは、ブログ投稿から変更されている- setUp(callback)
とtearDown(callback)
の両方のあなたのセットアップ/ティアダウンが完了したときに呼び出す必要が引数としてコールバックを取ります。]