web-dev-qa-db-ja.com

Node.jsで使用するのに最適なテストフレームワークは何ですか?

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

ブラウザーで実行できることは大きなボーナスになることは明らかですが、主にNode.jsに興味があります。非同期の傾きが大きいものは素晴らしいでしょう。

128
doffm

更新:

Mocha は私の意見では最高です。


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

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

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

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

しかし、私は主にNode.jsに興味があります。非同期の傾きが大きいものは素晴らしいでしょう。

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

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

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


TIP:フォロー TJ Holowaychuk on GitHub 。彼は非常に優れたオープンソースコードを作成しているため。

67
Alfred

VowsJS を使用します。これは、非同期BDDフレームワーク(Behaviour Driven Development)を使用して簡単に実行できます。

最近見たところから、多くの人がNPMモジュールをテストすることを選んだので、これまでのところ、それが最良の使用であると信じています。

NodeJSで使用できる一般的なテストフレームワークには次のものもあります。

JavaScriptテストフレームワークのリストも参照できます here

より良いコードを書くのに役立つライブラリは次のとおりです。

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

NodeJSを使用したCIのもう1つのオプションは、 Travis です。多くの人が、オープンソースプロジェクトで使用しているように、オープンソースコミュニティ向けのホストされた継続的統合サービス

Node JS Projectsの継続的統合 トピックに関するGoogleグループディスカッションもあります。

40
panosru

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

必ずガイダンスドキュメントを注意深く読んでください。ただし、いったん慣れると、柔軟で強力であり、すてきできれいな結果が得られます。

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

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

更新2015年1月7日:それが価値のあるものであるため、私はそれ以来VowsからMochaに、ShouldからChaiに切り替えました。 Mochaは、promiseを使用した非同期テストのサポートを大幅に改善し、Chaiは、オブジェクトプロトタイプを変更したくない人のために、expect apiなどの柔軟なアサートオプションを許可しています。

14
Chris Jaynes

JavaScriptテストで Jasmine を使い始めました。これは、サイズが小さく、ブラウザーとノードの両方で実行されるためです。また、非常に堅実なレポートとマッチャーAPIを備えているため、将来的に他のツールと簡単に統合できます。ビルトインモックフレームワークは、ブラウザでTDDにqunitを使用していたときに最初に追加することが多いため、しばしば役立ちます。

6
Mark B

nodeunit を使用してきましたが、非同期関数を操作する能力はかなり簡単です。

Nodeunit 彼のブログで を使用してすぐに使用できるようにする素敵なチュートリアルがあります。

[注:APIはブログ投稿以来変更されています– setUp(callback)tearDown(callback)は両方とも引数としてコールバックを受け取ります。セットアップ/分解が完了したときに呼び出す必要があります。 ]

2
Vanwaril

真のBDDフレームワークが必要な場合は、 Yadda を検討してください。機能ファイルをサポートするために、mocha、jasmine、nodeunit、qunit、zombie、casperjsと統合します。

   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
user2434418