2016-06-18 7 views
0

ユニットテストのためにカルマとジャスミンから始めている。私は最初の本当のテストを受けています。私が良いことをしているかどうかを知りたいのです。ジャスミン - 簡単な初期化関数をテストする

私は3つの初期化関数を呼び出すこのメソッドを持っています。

myApp.initializer.initializeApp = function() { 
    myApp.initializer.eventDelegation(); 
    myApp.initializer.initializeGlobals(); 
    myApp.scrollManager.initialize(); 
}; 

私はテストをしない場合は、カルマ・カバレッジはinitializeAppがカバーされていないことを私に語ったので、私はすべてが正しいかどうかを確認するために検証するためのテストを作りたいです。どのようなテストが必要ですか?私がこれらの2つの異なるテストを書くなら、カルマカバレッジは今私に機能を教えてくれます。カバーとして

describe ("Initializations suite", function(){ 
    it ("must check if functions are defined before call them", function(){ 
     spyOn(myApp.initializer, "eventDelegation"); 
     myApp.initializer.initializeApp(); 
     expect(myApp.initializer.eventDelegation).toHaveBeenCalled(); 
    }); 
}); 

または

describe ("Initializations suite", function(){ 
    it ("must check if functions are defined before call them", function(){ 
     expect(myApp.initializer.initializeApp).not.toThrow(); 
    }); 
}); 

両試験

はinitializeAppを作るが、私が言ったように、私はこれをテストするための適切な方法だか分かりません。

ありがとうございます。

答えて

0

より良い方法は、spyOnmyApp.initializer.eventDelegation();ではなく、その方法が想定していることがいくつかあります。

私たちは一般的にspyOnメソッドをテストしたいファイルには存在しません。たとえば、サービスに依存するangularjsコントローラファイルのテストケースを作成している場合、コントローラ内で呼び出されたサービスのメソッドはspyOnになります。

あなたが上記のテストで行ったことは、すでにファイルに存在するメソッドを嘲笑していることです。より良い方法は、myApp.initializer.initializeAppに電話し、myApp.initializer.eventDelegation();が呼び出されることを期待することです。できるだけ多くの行動を期待してください。テストケースの品質が向上します。

+0

あなたのご意見ありがとうございますSiddath ajmera。私があなたの答えで理解することは、より多くの動作をカバーするために両方のテストを行うことが正しいことです。最初のテストでは単にspyOnを削除しますか? – Ijuhash

+0

はい。ますます多くの行動をカバーしようとします。 –

関連する問題