4

Jasmine は初めてですが、Javascript で TDD をもっとやりたいと思っています。私は Google の Angular ライブラリを使用してきましたが、Testacularは Angular アプリをテストするために特別に作成されたことを知っています。

Jasmine のドキュメントを読み、Testacular セットアップ ビデオを見ましたが、最も基本的なテストを実行できません。次の 3 つのファイルがあるとします。

modules.js
controller.js
appSpec.js

modules.js には、いくつかの .factory(...) サービスといくつかの .directive(...) カスタム ディレクティブを含むモジュール定義があります。controller.js には、モジュールを html ビューに接続するためのコントローラーが格納されています。

ここまでは順調ですね。次に、appSpec.js を追加しました。リソースを返すメソッド「getData()」を持つ「Data」というモジュール内のサービスをテストするためにそれを使用したいとしましょう。

testactular init では、3 つのファイルすべてを監視するように指示しました。Testacular を実行すると、正しいファイルを監視していると表示されます。素晴らしい。

私が理解していないのは、モジュールとコントローラーをテストできるようにする方法を Jasmine の仕様にどのように理解させるかということです。簡単に言うと:

describe('Data Service', function(){
  it ('should retrieve two items from the database', function(){
    data = Data.getData() //my angular service
    expect(data.length).toBe(2);
  });
});

当然のことながら、Data.getData() が何であるかはわかりません。

スイートを書き始める前に、どうにかモジュール定義とコントローラーを仕様に組み込む必要があることは明らかです。人々がそれをどのように行っているかをドキュメントで見ることができないほど明白に違いありません。チュートリアルは、spec.js ファイルに仕様を書き始めたようで、すべてが順調であると想定しています。

ここで同様の質問がされている他の投稿を見てきましたが、確かにそれらにはすべて、私が欠けていると思われる基盤があります. たとえば、ある投稿では、コントローラーのインスタンスを手動で作成するのではなく、依存関係を注入することについて説明しています。なぜ彼は新しい $rootScope オブジェクトを作成しているのか、彼のモジュールはどのように参照されているのかなど...

私の質問はおそらく Jasmine フレームワークの基本的な理解が不足しているだけであることは理解していますが、Jasmine の readme ファイルからそれ以上の理解を引き出すことはできないようです。誰かがこれがどのように機能するのかについての基本的な説明を教えてもらえますか?

ありがとう。

4

2 に答える 2

2

module('myModule')ジャスミンテストでやってみてください。

以下は、注目すべき優れたテストを備えたオープンソースのAngularプロジェクトです。

角度アプリ

angular-ui

ブートストラップ

于 2013-02-09T21:40:48.173 に答える
0

テストの定義を含める方法は、karma.config.js ファイルを使用することです

files = [ JASMINE, JASMINE_ADAPTER, '../app/lib/icg/object.js', '../app/lib/icg/geometry.js', '../app/lib/icg/ubiquity.js', '../test/unit/icgUbiquitySpec.js', '../test/unit/icgObjectSpec.js' ];

ここでは、どのファイルをブラウザにロードするかを定義します。「Spec」という単語を含まない最初のファイルが定義であり、含むファイルが私のテスト ファイルです。テストを実行する前に定義が定義されるように、テストの前に定義を含める必要があります。これが、すべての仕様ファイルを最後に含める理由です。

于 2013-06-17T16:20:05.453 に答える