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 ファイルからそれ以上の理解を引き出すことはできないようです。誰かがこれがどのように機能するのかについての基本的な説明を教えてもらえますか?
ありがとう。