バックボーンのユニットテスト。JSアプリケーション
何時間も過ごした後、タッチしなかった部分は、恐ろしく不幸になりました。これで、既存のコードをどのように壊したかを把握しようとするために、作業の日々をバックトラックするという課題に直面しています。幸せな日は間違いなく再びここにありません。 そのまさにシナリオが私が認めたい以上に私を噛んだ。そして、あなたがしばらくコーディングしているなら、おそらくあなたもそれを見たことがあるでしょう。ただし、このシナリオを非常に苦痛にしている理由を考えてみましょう。新しいコードが既存のコードを破ったためではありません。それは開発では避けられません。本当の痛みは、破損に気付くのに時間がかかったことです。アプリケーションが機能していることを知って以来、非常に多くの開発があるため、バグが隠れている可能性のあるコードが大量にあります。そして、それは干し草の山で針を狩るようなように思えるかもしれませんが、私たちはそれを潜るしかありません。 この記事では、JavaScript開発からこのシナリオを本当に追放するつもりです。針を探しているコードの数時間、数日、または数週間を掘ることはもうありません。私たちが採用する原則は簡単なものです。
を作成するとすぐにバグを見つけます。それは正しい;バグを導入するコードを作成するときにすぐにわかります。さらに、私たちがプロセスに費やした余分な努力は、初期開発が完了すると無駄になりません。開発バグをキャッチするのと同じテストコードは、統合環境で完全に再利用可能になります。テストをソースコード管理システムに簡単に組み込むことができ、コードベースに入る前にバグをブロックできます。次の4つのセクションでは、まずJavaScriptテスト環境に必要なツールを調べます。次に、理解するのに十分なシンプルなアプリケーションを検討しますが、実際の制作Webアプリケーションに存在する可能性のあるすべての機能と機能を備えています。最後の2つのセクションでは、開発中に環境を使用してサンプルアプリをテストする方法を示しています。
キーテイクアウト
-
開発中の早期のバグ検出を強調して、後の段階で複雑な問題を防ぎ、スムーズなコーディングエクスペリエンスを確保し、バックトラッキングを最小限に抑えます。
- ブラウザーとnode.js環境の両方との互換性のため、Mochaをコアテストフレームワークとして利用して、開発から統合テストへのシームレスな移行を可能にします。 CHAIアサーションライブラリを組み込み、テストの読みやすさと柔軟性を高め、さまざまな開発者の好みに応える複数のスタイル(アサート、期待、すべき)を提供します。
- スパイ、スタブ、モックを作成するためにSinon.jsを使用します。これらは、外部ライブラリやサービスとの相互作用をテストするために不可欠です。 Test’emを使用して継続的なテスト環境を設定して、コードの変更時にテストを自動的に実行し、アプリケーションの健康に関する即時フィードバックを提供します。
- 開発中に、モデル、ビュー、およびコレクションの詳細な単体テストの作成に焦点を当て、各コンポーネントが単独で正しく機能するようにします。 node.jsでコマンドライン実行のためにユニットテストを適応させることにより、統合テストにスムーズに移行し、生産環境でアプリケーションが期待どおりに動作するようにします。
- JavaScriptテスト環境のアセンブリ
- nirvanaの単体テストには、ワークベンチにない可能性のある開発ツールが必要です(まだ)。ニュースは、良い面と悪い面でも、オプションがたくさんあるということです。それは私たちに選択肢を与えてくれるので朗報です。そして、今日のフロントエンド開発のペースはあまりにも多くの選択肢があることを意味するので、それは悪いニュースです。評価に焦点を当てるために、トップ2の目標について明確にしましょう。他のすべては二次的です:
- 私たちの環境は、開発中の摩擦のない継続的なテストをサポートする必要があります 開発中に作成されたテストは、統合で等しく使用できる必要があります。
- 実行環境
テストフレームワーク
テストツールは、Webブラウザーとnode.js環境の両方をサポートする必要があることを確認したため、コアテストフレームワークを選択するのに十分な選択肢を絞り込むことができます。多くのJavaScriptテストフレームワークが存在しますが、ほとんどはブラウザーテストに大きく偏っています。通常、node.jsで動作させることは通常可能ですが、多くの場合、無力なハックまたは調整が必要です。この問題に苦しんでいないフレームワークの1つはモカです。
Mochaは、ノードとブラウザで実行されている機能が豊富なJavaScriptテストフレームワークであり、非同期テストをシンプルで楽しくします。
node.js用に開発されたMochaは、Webブラウザーも容易にサポートするために拡張されました。 Mochaをテストフレームワークとして使用することにより、変更なしで開発と統合の両方をサポートするテストを作成できます。
アサーションライブラリ
いくつかのJavaScriptテストフレームワークとは異なり、Mochaは柔軟性を最大限に活用できるように設計されています。結果として、それを完成させるには、いくつかの追加作品を選択する必要があります。特に、JavaScriptアサーションライブラリが必要です。そのために、Chai Assertion Libraryに依存します。 Chaiは、すべての一般的なアサーションスタイルをサポートするという点でややユニークです。コード。カバーの下では、それらはすべて同等です。テストを1つのアサーションスタイルからもう1つのテストに翻訳するのは簡単です。アサーションスタイルの主な違いは、読みやすさです。アサーションスタイルの選択は、主にあなた(またはあなたのチーム)が最も読みやすいスタイルと、どのスタイルが最も理解できるテストを生成するかに依存します。違いを確認するには、次のコードの些細なテストの開発を検討してください。 従来のアサートスタイルのテストは、次のように記述できます そのテストは仕事を終了しますが、古い学校の単体テストに慣れていない限り、読んで解釈するのは少し難しいでしょう。代替のアサーションスタイルでは、を使用します ほとんどの開発者は、アサートスタイルのテストよりも読みや理解が容易になると予想されるスタイルのアサーションを見つけます。 3番目の選択肢は、テストアサーションを自然言語のようにさらに行う必要があります:
<span>var sum = 2 + 2;</span>
Chaiライブラリは、3つのアサーションスタイルすべてをサポートしています。この記事では、
に固執します スパイ、スタブ、および模擬assert<span>.equal(sum, 4, "sum should equal 4");</span>
ほとんどのWebアプリは、サードパーティの図書館とサービスに依存しています。多くの場合、コードをテストするには、それらのライブラリやサービスを観察する、または制御する必要があります。 Sinon.JSライブラリは、これらの相互作用をテストするための多くのツールを提供しています。このようなツールは、3つの一般的なクラスに分類されます
<span>expect(sum).to.equal(4);</span>
spy
。テスト中のコードの外側の機能への呼び出しを観察するテストコード。スパイは、これらの外部機能の動作を妨害しません。彼らは単に呼び出しと返品値を記録するだけですsum<span>.should.equal(4);</span>
stub
。テスト中のコードの外側の機能を呼び出すためのテストコード。スタブコードは、外部関数を再現しようとはしません。テスト下のコードが外部関数にアクセスすると、未解決のエラーを防ぎます。 mock。テスト中のコード外で機能またはサービスを模倣するテストコード。モックを使用すると、テストコードはそれらの関数またはサービスからの返品値を指定して、コードの応答を確認できるようにします。
テストワークベンチの最終ツールは、ユニットテストの開発環境です。この例では、test’emを使用します。 Test’emは、連続テスト環境を設定および実行するための便利なスクリプトのコレクションです。選択した場合、スクリプトを自分で書いて、環境を手動で管理することができます。しかし、Toby Ho(Test’emの作成者)は、私たちにトラブルを救うことができる素晴らしいパッケージをまとめました。
サンプルアプリケーションテスト環境が動作していることを確認するには、簡単なアプリケーションを考えてみましょう。このアプリケーションには、その裸の必需品には偏っていますが、実際のアプリケーションに必要なすべての機能が含まれています。 (アプリケーションの完全なソースコードはGitHubで入手できます。)

TODOSデータベース
アプリケーションは、TODOの情報を保持するデータベーステーブルから始まります。このテーブルを作成するために使用できるSQLは次のとおりです。
そして、テーブルがテストデータを入れた後のテーブルがどのように見えるかを次に示します。
<span>var sum = 2 + 2;</span>
id
title当社のWebアプリケーションにはこのデータベースへのアクセスが必要なため、標準のRESTインターフェイスを提供します。 APIはRubyコンベンションに従いますが、サーバーテクノロジーによって簡単に実装できます。特に:
get api/todosは、データベース内のすべての行のJSONエンコードされた配列を返します。
get api/todos/nnnは、nnnに等しいIDを持つtodoのJSON表現を返します。
POST API/TODOSは、リクエストのJSONエンコードされた情報を使用してデータベースに新しいTODOを追加します。- put api/todos/nnnは、リクエストでjsonエンコードされた情報を使用して、nnnに等しいIDでtodoを更新します。
- delete api/todos/nnnデータベースからnnnに等しいIDでtodoを削除します。
- Rubyが特に好きではない場合、ソースコードにはこのAPIの完全なPHP実装が含まれています。
- javascriptライブラリ
- 控えめなアプリケーションは、ライブラリなしで純粋なJavaScriptに実装するのに十分なほど簡単ですが、はるかに大きな計画があります。小さいかもしれませんが、最終的にはアプリは驚くべき機能と楽しいユーザーインターフェイスを備えています。その日に備えて、究極のキラーアプリをサポートできるフレームワークの上に構築します:
- jquery dom操作、イベント処理、サーバー通信のための。
- underscore.js多くの不可解なユーティリティを使用してコア言語を強化します。
- backbone.jsモデルとビューの観点からアプリケーションの構造を定義する。
アプリケーションを構成するコンポーネントがわかったので、それをサポートするHTMLスケルトンを定義できます。 (まだ)派手なものはありません(まだ)、最小限のHTML5ドキュメント、いくつかのJavaScriptファイル、そして物事を開始するための小さなコード。
開発中のテスト
<span>var sum = 2 + 2;</span>
ツールを選択し、アプリケーションを指定したので、開発を開始する時が来ました。最初のタスクはツールのインストールです
ツールのインストールブラウザで開発する場合でも、テスト環境はnode.jsに依存しています。したがって、最初のステップは、node.jsとノードパッケージマネージャー(NPM)のインストールです。 Node.js Webサイトには、OS X、Windows、Linux、Sunos用の実行可能バイナリ、および他のオペレーティングシステムのソースコードがあります。インストーラーを実行した後、コマンドラインからnode.jsとnpmの両方を確認できます。
必要なものはすべて、ノードパッケージとして便利に利用できます。ノードパッケージマネージャーは、インストールと依存関係を処理できます。
プロジェクト構造の作成
assert<span>.equal(sum, 4, "sum should equal 4");</span>
各フォルダーとファイルに含まれるものは次のとおりです
- todos.html:アプリケーション用のスケルトンHTMLファイル、上に完全に示されています。 testem.json:test’emの構成ファイル。これについてはまもなく詳細に説明します。
- API/:REST API実装のフォルダー。
-
- API/HTACCESS:REST APIをサポートするApache Webサーバーのサンプル構成。
- API/TODOS.PHP:PHPコードREST APIを実装します。
- lib/backbone-min.js:backbone.js
- lib/chai.js:chai assertion briveral。
- lib/jquery-1.9.0.min.js:jqueryの削除バージョン。
- lib/sinon-1.5.2.js:sinon.jsライブラリ。
- lib/sinon-chai.js:sinon.js chaiのアサーション。
- lib/underscore-min.js:underscore.js
- mysql/:アプリケーション用のmysqlコードのフォルダー。
-
- PHP-LIB/:PHPライブラリのフォルダーと、アプリケーションのREST API用の構成。
- PHP-LIB/DBCONFIG.INC.PHP:REST APIのPHPデータベース構成
- src/:クライアント側のアプリケーションコードのフォルダー。
- src/app-todos.js:アプリケーション。
- テスト/:テストコードのフォルダー。
- test/app-todos-test.js:アプリケーションのテストコード。
-
- 開発中、これらのファイルのうち3つのファイルのみに関心があります。TESM.JSON、SRC/APP-TODOS.JS、およびTEST/APP-TODOSTEST.JS。
- test’em の構成
の開発を開始します
最後に、コーディングの準備が整いました。コマンドシェルで、プロジェクトのルートフォルダーに移動し、コマンドテストムを実行します。 Test’emスクリプトが実行され、端子ウィンドウがクリアされ、右上にURLが与えられます。そのURLを選択したブラウザにコピーして貼り付けてください。Webブラウザを起動するとすぐに、定義したテストを自動的に実行します。開発を開始したばかりなので、コードもテストケースもありません。ブラウザは、それを親切に指摘します
Test’emを起動した端子窓もステータスを与えます。

最初のテストケース
真のテスト駆動型開発の精神では、テスト/App-todos-test.jsファイルに最初のテストケースを記述することから始めます。他の優れたWebアプリと同様に、グローバルネームスペース汚染を最小限に抑えたいと考えています。そのためには、すべてのコードを含むために、単一のグローバル変数TODOAPPに依存します。最初のテストケースでは、グローバル名スペース変数が存在することを確認します。
<span>var sum = 2 + 2;</span>
テストブロック内で、各テストケースをテストするもので文書化します。それがIT()関数の目的です。テストケースを読む方法は、describe()とit()文字列を単一のステートメントに結合することです。したがって、最初のテストケースは
ですアプリケーションは、名前空間のグローバル変数を作成します
ですテストコード自体はIT()ブロック内にあります。私たちのテストケースは
これで、完全なテストケースがあります。ファイルを保存するとすぐに、Test`EMが自動的に引き継ぎます。ファイルの1つが変更されたことに気付くため、すぐにテストを再実行します。当然のことながら(まだアプリケーションのコードを書いていないため)、最初のテストは失敗します。
assert<span>.equal(sum, 4, "sum should equal 4");</span>
端子ウィンドウも自動的に更新されます

ファイルを保存するとすぐに、テストは再び行動に陥ります。テストケースの最新の結果がすぐに表示されます

しばらく後退して、何が起こっているのかを考えてください!テストコードまたはアプリケーションのいずれかに変更を加えるたびに、Test`EMはすぐにテストスイート全体を再実行します。私たちがしなければならないのは、画面の隅にTest’emのブラウザまたは端子ウィンドウを表示できるようにすることです。リアルタイムでコードの健康状態を見ることができます。バグが作業している場所とは異なるコードの一部に現れても、バグを導入するとすぐにわかります。バグを導入した時期を把握するために、時間、数日、または数週間の新しいコードを掘り下げることはもうありません。
モデルのテスト
開発環境が完全に確立されたため、アプリケーションの開発を開始できます。私たちのアプリはTODOのリストを表示しているので、それらのTODOのモデルを作成することは良いかもしれません。モデルは、TODOのタイトルとそのステータスの両方を追跡する必要があります。合理的なデフォルトでTODOを作成できる検証を検証するユニットテストを追加しましょう。
<span>var sum = 2 + 2;</span>
互いにテストブロックをネストすることができます。 1つのテストブロックには、TODOモデルのすべてのユニットテストが含まれ、これらのテストのサブブロックは初期化に焦点を当てています。
- テストブロック内で、すべてのテスト前に実行する機能を定義できます。それが、Beforeeach()ブロックの目的です。上記の例では、すべてのテストの前にTODOの新しいインスタンスを作成しています。
- Mochaフレームワークは、JavaScriptコンテキスト(つまり、これの値)がすべてのテストケースで一貫していることを自動的に確認します。そのため、This.todoを1つの関数(beforeeach()パラメーター)で定義し、他の関数(IT()パラメーターなど)で安全に参照できます。 Mochaがこの一貫性を提供するために舞台裏で作業しなければ、JavaScriptは各関数の異なるコンテキストを定義します。
- もちろん、モデルコードをまだ作成していないため、すべてのテストが失敗します。 (そして、私たちはそれをすぐに知るでしょう。)しかし、モデルのコードを追加したら、テストが合格し、途中です。 サードパーティの機能にスタブを使用する
assert<span>.equal(sum, 4, "sum should equal 4");</span>
スタブを所定の位置に配置すると、テストケースを使用してモデルの動作を検証できます。最初のテストケースでは、すぐにTODOのタイトルを新しい価値に設定しました。タイトルプロパティが変更されているため、モデルにバッキングストアを更新してもらいたいと考えています。スタブが呼び出されたことを単純に確認するために確認します。モデルをこれらのテストに合格させるために、変更イベントを探して適切に対応できます。
<span>var sum = 2 + 2;</span>
もちろん、私たちのアプリは、実際にTODOをユーザーに表示せず、HTMLを作成する必要がある場合、誰も何の役にも立たないでしょう。その機能にはバックボーンビューを使用します。些細なアプリでは、各TODOをリスト項目としてレンダリングしたいだけです。これが私たちを始めさせるテストケースです。
2つのテストケースでビューのテストを開始します。まず、ビューのrender()メソッドがビュー自体を返すようにします。これは、メソッドチェーンを可能にするため、バックボーンで一般的で非常に便利な慣習です。 2番目のテストケースは、レンダリングが作成するHTML要素がリスト項目(
assert<span>.equal(sum, 4, "sum should equal 4");</span>
次に、そのリスト項目ビューの詳細なコンテンツを開発できます。例として、完全なリスト項目が次のように見えるようにしたい。
<span>expect(sum).to.equal(4);</span>
最後のテストケースでは、モデルのsave()メソッドをスタブしたことに注意してください。プロパティをデフォルト値から変更しているため、モデルはその変更をバッキングストアに維持しようとします。ただし、ユニットテスト環境では、データベースやサーバーAPIはありません。スタブは、欠落しているコンポーネントの代わりになり、エラーなしでテストを続行できます。これらのテストを渡すには、ビューに追加のコードを追加する必要があります。
sum<span>.should.equal(4);</span>
テストモデル/表示相互作用を表示
CREATE TABLE `todos` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Primary key for the table.', `title` varchar(256) NOT NULL DEFAULT '' COMMENT 'The text for the todo item.', `complete` bit(1) NOT NULL DEFAULT b'0' COMMENT 'Boolean indicating whether or not the item is complete.', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='To Do items.'
フィクスチャ
として知られています。これがユニットテストコードです。<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> lang<span>="en"</span>></span> </span> <span><span><span><head</span>></span> </span> <span><span><span><meta</span> charset<span>="utf-8"</span>></span> </span> <span><span><span><title</span>></span><span><span></title</span>></span> </span> <span><span><span></head</span>></span> </span> <span><span><span><body</span>></span> </span> <span><span><span><h1</span>></span>List of Todos<span><span></h1</span>></span> </span> <span><span><span><script</span> src<span>="lib/jquery-1.9.0.min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><script</span> src<span>="lib/underscore-min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><script</span> src<span>="lib/backbone-min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><script</span> src<span>="src/app-todos.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><script</span>></span><span> </span></span><span><span> <span>$(function () { </span></span></span><span><span> <span>var todos = new todoApp<span>.Todos</span>(); </span></span></span><span><span> todos<span>.fetch(); </span></span></span><span><span> <span>var list = new todoApp<span>.TodosList</span>({collection: todos}); </span></span></span><span><span> <span>$("body").append(list.el); </span></span></span><span><span> <span>}) </span></span></span><span><span> </span><span><span></script</span>></span> </span> <span><span><span></body</span>></span> </span><span><span><span></html</span>></span></span>
再びTODOのSave()メソッドを突き刺していることに注意してください。それ以外の場合、バックボーンは、シミュレートされたクリックでTODOステータスを変更するときに、存在しないバッキングストアを更新しようとします。
テストケース自体については、フィクスチャのIDを使用して
<span>var sum = 2 + 2;</span>
コレクションのテスト
assert<span>.equal(sum, 4, "sum should equal 4");</span>
この時点で、アプリケーションはほぼ完了しています。残りの唯一の機能は、すべてのTODOを一緒に収集することです。当然、バックボーンコレクションを使用します。私たちは実際にコレクションで特別なことをするつもりはないので、ユニットテストは本当に必要ありません。
ただし、コレクションの見解の実装が適切であることを確認できます。そのビューは、順序付けられていないリスト(- )としてレンダリングされたいと考えています。テストケースは、これまで見たことのない機能を必要としません。
ビューの実装も簡単です。コレクションへの追加を追跡し、ビューを更新します。最初のrender()の場合、コレクション内のすべてのモデルを一度に1つずつ追加するだけです。
<span>expect(sum).to.equal(4);</span>
ボーナステスト:APIの検証
sum<span>.should.equal(4);</span>
API相互作用をテストする最も簡単な方法は、sinon.jsの偽のサーバー機能に依存しています。残念ながら、その機能は、Sinonのブラウザの実装でのみ(現在)利用可能です。 node.jsの実装から明示的に除外されています。 node.jsで実行するためのハックがいくつかありますが、これらのハッキングは非常に脆く、内部実装の詳細に依存しています。可能であれば避けるのが最善です。幸いなことに、Sinonの偽サーバーなしではうまくいくことができます
秘密は、バックボーンがjqueryの$ .ajax()関数に依存して、rest apisを実装することを知っていることです。その関数をスタブすることにより、API相互作用を傍受できます。関数をスタブするときは、独自の応答を置き換えたいと思うでしょう。 スタブのevelowsto()メソッドは、その機会をまったく与えてくれます。それは、スタブが呼び出されたときにどのような追加のアクションをとるべきかをシノンに伝えます。これは、REST APIを使用してコレクションが正しく初期化されていることを確認するための完全なテストケースです。
<span>var sum = 2 + 2;</span>
次のスクリーンショットからわかるように、すべてのユニットテストケースに渡すコードを作成しました。少なくとも当面は、開発が完了しました。
統合中のテスト

アプリのクライアント側の開発が完了したため(そしてそれを証明するためのテストがあります)、JavaScriptをソースコード管理システムに安全に押し込むことができます。その後、アプリケーション全体のビルドプロセスに統合できます。そのプロセスの一環として、開発したすべてのテストケースを実行したいと考えています。これにより、最終展開を構成するコードが定義したすべてのテストに合格することが保証されます。また、新しいバグを誤って導入するコードの「マイナーな調整」から保護します。
ビルドプロセス中に、Webブラウザーではなくコマンドラインからテストを実行することをお勧めします。個々のテストケースの詳細は必要ありません。すべてが合格するという保証だけです。 node.jsは、この要件に対応するのに十分簡単になります。ソースコードおよびユニットテストコードファイルにいくつかの小さな追加を行う必要があります。 Node.jsは、Webブラウザーとは異なる方法でグローバル変数を処理するため、
コードがこれらの変更が必要です。 Webブラウザでは、JavaScript変数はデフォルトでグローバルな範囲です。一方、node.jsは、デフォルトで変数をローカルモジュールに限定します。その環境では、私たちのコードは必要なサードパーティのライブラリを見つけることができません(jquery、underscore、およびbackbone。最初に次の記述を追加すると、node.jsはこれらのライブラリへの参照を適切に解決します。また、テストコードを調整する必要があります。テストスクリプトでは、独自のライブラリ(jquery、chai、sinon.js、およびsinon-chai)にアクセスする必要があります。さらに、Webブラウザーのドキュメントオブジェクトモデル(DOM)をシミュレートするために、少し追加を追加する必要があります。クリック処理のためのテストでは、Webページに「フィクスチャ」
<span>var sum = 2 + 2;</span>
これらの変更を使用すると、コマンドラインから完全なテストスイートを実行できます。プロジェクトのルートフォルダーに移動し、コマンドMochaを実行するだけです。結果は非常によく知られているように見えます。
もちろん、モカは出口レベルを返して、すべてのテストが合格したかどうかを示します。これにより、継続的な統合プロセスの一部として、または単に独自の正気を維持するためのローカルプリコミットスクリプトとしてテストを自動化できます。
結論
この時点で、私たちは目標を達成しました。開発中にバックグラウンドで実行されるユニットテスト環境があり、テストが失敗したときにすぐに通知します。テストはWebブラウザで実行され、コーディング中にブラウザの開発ツールに完全にアクセスできます。同じテストもコマンドラインスクリプトから等しく実行されるため、ビルドまたは統合プロセス中に実行を自動化できます。
リソースこれが記事で使用されている主要なテストリソースです。
コマンドラインjavaScript実行環境:node.js
javaScript単体テストフレームワーク:mocha
- テスト開発環境:test’em
- JavaScript Assertion Library:Chai Assertion Library
- スパイ、スタブ、および模擬:sinon.js
- 追加のアサーション:sinon.js chai
- のアサーション
- backbone.jsアプリケーションの単体テストに関するよくある質問(FAQ)
- backbone.jsアプリケーションでの単体テストの重要性は何ですか?
backbone.jsのユニットテストは、他のjavascriptフレームワークと比較してどのように比較されますか?
backbone.jsは、他のJavaScriptフレームワークと同様に、アプリケーションの品質を確保するための単体テストをサポートします。ただし、Backbone.jsは、柔軟性とシンプルさのために際立っています。アプリケーションをどのように構成すべきかを決定することはなく、開発者は適切と思われるアプリケーションを自由に設計することができます。この柔軟性は単体テストにまで及び、開発者が好みのテストツールと方法論を選択できるようになります。さらに、Backbone.jsは他のフレームワークと比較してフットプリントが小さく、単体テストのために高速かつ効率的になります。 Backbone.jsでの単体テストに利用できるいくつかのツールです。人気のあるものには、Mocha、Jasmine、Jestが含まれます。 Mochaは、開発者にアプリケーションをテストする簡単な方法を開発者に提供する機能が豊富なJavaScriptテストフレームワークです。 Jasmineは、JavaScriptコードをテストするための行動主導の開発フレームワークです。ブラウザ、DOM、またはJavaScriptフレームワークに依存していないため、BackBone.jsアプリケーションのテストに最適です。一方、Jestは、大規模なWebアプリケーションのシンプルさとサポートに焦点を当てた包括的なテストソリューションです。 Backbone.jsアプリケーションのテストには、アプリケーションの各コンポーネントのテストケースの作成が含まれます。これには、モデル、ビュー、コレクションが含まれます。各テストケースは、コンポーネントの特定の機能をカバーし、他のテストケースとは無関係である必要があります。 MochaやJasmineなどのテストフレームワークを使用して、テストを作成できます。これらのフレームワークは、テストケースを定義し、テスト環境をセットアップおよび解体し、アサーションを作成する機能を提供します。 JSは、使用しているテストフレームワークに依存します。たとえば、Mochaを使用している場合は、Mochaコマンドラインツールを使用してテストを実行できます。ジャスミンを使用している場合は、ジャスミンコマンドラインツールを使用してテストを実行できます。これらのツールは、個々のテストケース、テストスイート全体、またはアプリケーション内のすべてのテストを実行するオプションを提供します。また、渡され、失敗し、スキップされたテストの数など、テストの結果に関する詳細なレポートを提供します。 Backbone.jsでユニットテストを自動化します。自動化には、コードが変更されるたびにテストを自動的に実行する継続的な統合(CI)システムのセットアップが含まれます。これにより、変更によって導入されたバグがすぐにキャッチされます。 JavaScriptをサポートし、Backbone.jsの単体テストを自動化するために使用できるJenkins、Travis CI、Circleciなど、いくつかのCIツールが利用可能です。
以上がバックボーンのユニットテスト。JSアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

この記事では、Javaのコレクションフレームワークの効果的な使用について説明します。 データ構造、パフォーマンスのニーズ、スレッドの安全性に基づいて、適切なコレクション(リスト、セット、マップ、キュー)の選択を強調しています。 コレクションの使用を効率的に最適化します

エントリーレベルのタイプスクリプトチュートリアルをマスターしたら、TypeScriptをサポートするIDEで独自のコードを作成し、JavaScriptにコンパイルできるはずです。このチュートリアルは、TypeScriptのさまざまなデータ型に飛び込みます。 JavaScriptには、NULL、未定義、ブール値、数字、文字列、シンボル(ES6によって導入)とオブジェクトの7つのデータ型があります。 TypeScriptはこれに基づいてより多くのタイプを定義し、このチュートリアルではすべてを詳細に説明します。 ヌルデータ型 JavaScriptのように、Typescriptのnull

このチュートリアルでは、chart.jsを使用してパイ、リング、およびバブルチャートを作成する方法について説明します。以前は、4つのチャートタイプのchart.js:ラインチャートとバーチャート(チュートリアル2)、およびレーダーチャートと極地域チャート(チュートリアル3)を学びました。 パイとリングチャートを作成します パイチャートとリングチャートは、さまざまな部分に分かれている全体の割合を示すのに理想的です。たとえば、パイチャートを使用して、サファリの男性ライオン、女性ライオン、若いライオンの割合、または異なる候補者が選挙で受け取る票の割合を示すことができます。 パイチャートは、単一のパラメーターまたはデータセットの比較にのみ適しています。パイチャートのファンの角度はデータポイントの数値サイズに依存するため、パイチャートは値のあるエンティティをゼロ値で描画できないことに注意してください。これは、割合がゼロのエンティティを意味します
