web-dev-qa-db-ja.com

使用するテストフレームワークを決定するにはどうすればよいですか?

状況はこれです。

私は小さな政府ITプロジェクトのジュニア開発者です。継続的な統合や自動テストフレームワークはありません。しかし、アイデアはこの種のものを開発すること/私たちの開発環境を改善することです。

この製品はデータ処理アルゴリズムであり、Webアプリケーションを介してエンドユーザーに情報を表示します。

そのため、WebアプリケーションのJavaScriptを変更する作業がたくさんあります。そのため、JavaScriptの単体テストを実装する必要があります。

私はこれを見ました スタックオーバーフローの質問 これは、javascriptのいくつかの異なるユニットテストフレームワークの概要を示しています。

問題は、どのフレームワークを使い始めるかをどのように決定するかです。

  • テストフレームワークを選択するための基準のリストは何ですか?
  • それらをすべて試すのは現実的ですか?
  • フォーラムなどの使用方法について、フォーラムなどをよく読んでください。
8
dwjohnston

テストフレームワークを選択するための基準のリストとは何ですか?

1)構文

さまざまなテストフレームワークを調べると、構文がそれらすべての差別化要因であることがわかります。これは本当に快適に感じるものに依存します。

たとえば、 qUnit は、宣言型のテストフレームワークです。そのAPIは、test、equals、strictEqual、deepEqualなどの関数で構成されています。

別のテストフレームワーク mocha は、構造のようなより多くの文を読み取るという点で、rspecに似ています。そのAPIは、describe、it、assert.equalなどの関数で構成されています。

私の個人的な好みはqunitのような構造です。

2)機能-スタブ、スパイ、偽のサーバー、偽の時計など

Javascriptでテストを開始すると、特定のユースケースのテストに役立つテストフレームワークが必要な状況にすぐに気づくでしょう。例えば:

スパイ-これは、コードが必要なときに関数が関数を呼び出したかどうかを検出するのに役立ちます

スタブ-事前定義された動作を含むことを除いて、スパイに非常に似ています(例:スタブが呼び出されたときにfooを返します)

偽のサーバー-コードがAJAX呼び出しを発行し、AJAXの呼び出しの応答を偽造したい場合、.

偽の時計-コードが日付または時刻に基づいて異なる反応をする場合、偽の時計は、テストの実行時間を正確に制御するのに役立ちます。

上記のすべての機能をサポートするJavascriptフレームワークに対する私の推奨は Sinon.JS です。構文やフレームワークのようなqunitが好きなので、qunit AND Sinon.JSを使用します。 qunitはアサーションを処理し、テストを実行します。 Sinon.JSを使用すると、スタブ、スパイ、偽のサーバーの実行、および時計の偽造を行うことができます。

3)コミュニティサポート

テストフレームワークはコミュニティによってサポートされていますか?たとえば、grunt(ビルド環境ツール)は、ヘッドレスのPhantomJSサーバーでのqunitの実行をサポートしています: https://github.com/gruntjs/grunt-contrib-qunit 。これにより、テストを簡単に記述し、テストファイルを保存するたびに自動的に実行することができます。

それらをすべて試すのは現実的ですか?いいえ、実用的ではありません。代わりに、各フレームワークのWebサイトを調べて、テストに慣れているものと、テスト中にサポートするものを選択してください。

フォーラムなどの使用方法について多くの時間を費やして読んでいますか?で本を入手してください選択したフレームワークで、必要に応じてそれをすくい取ります。

13
richardaday