0

私は以下のコントローラのメソッドがあります。Mocha/Jasmineを使用してコントローラーメソッドのif elseケースのカルマカバレッジを取得するにはどうすればよいですか?

function changeItem(itemList) { 
 
      vm.selectedItem = ''; 
 
      if(itemList !== null || itemList !== '' && itemList !== undefined){ 
 
\t \t \t \t if (itemList.guestFirstName !== '' && 
 
\t \t \t \t \t itemList.guestFirstName !== undefined && 
 
\t \t \t \t \t itemList.guestFirstName !== null) { 
 
\t \t \t \t \t vm.selectedItem += itemList.guestFirstName + ' '; 
 
\t \t \t \t } 
 
\t \t \t \t if (itemList.guestLastName !== '' && 
 
\t \t \t \t \t itemList.guestLastName !== undefined && 
 
\t \t \t \t \t itemList.guestLastName !== null) { 
 
\t \t \t \t \t vm.selectedItem += itemList.guestLastName + ' '; 
 
\t \t \t \t } 
 
\t \t \t \t Iif (itemList.type !== '' && 
 
\t \t \t \t \t itemList.type !== undefined && 
 
\t \t \t \t \t itemList.type !== null) { 
 
\t \t \t \t \t vm.selectedItem += itemList.type + '-'; 
 
\t \t \t \t } 
 
\t \t \t \t if (itemList.id !== '' && 
 
\t \t \t \t \t itemList.id !== undefined && 
 
\t \t \t \t \t itemList.id !== null) { 
 
\t \t \t \t \t vm.selectedItem += itemList.id + ' '; 
 
\t \t \t \t \t if (itemList.id === "All") { 
 
\t \t \t \t \t \t vm.selectedId.push(vm.itemLists.id); 
 
\t \t \t \t \t } 
 
\t \t \t \t \t else { 
 
\t \t \t \t \t \t vm.selectedId = itemList.id; 
 
\t \t \t \t \t } 
 
\t \t \t \t } 
 
\t \t \t } 
 
     } 
 
    }

spec.js:

t('listController - changeItem()', inject(function() { 
 
      var itemList = [ 
 
       { 
 
        "id":111, 
 
        "guestfirstName":"Test", 
 
        "guestlastName":"Test", 
 
        "type":"BUSINESS" 
 
       }, 
 
       { 
 
        "id":222, 
 
        "guestfirstName":"Test", 
 
        "guestlastName":"Test", 
 
        "type":"BUSINESS" 
 
       }, 
 
      ]; 
 
      var selectedItem = "Test Test BUSINESS-111" 
 

 
      controller.changeItem(itemList); 
 
      scope.$apply(); 
 
      expect(controller.selectedItem).to.equal(selectedItem); 
 
      expect(controller.selectedId).to.equal(itemList[0].id); 
 
     }));

をしかし、私はテストを実行すると、それが文を言います機能を除いてブランチはカバーされていません。

おかげ

答えて

0

その後、changeItem()メソッドを再実行、微妙たびに、それを変更、itemListののさまざまな部分を確認すること()ステートメントを区切ることができます。次に、必要なカバレッジに達するようにifListに到達するようにitemListを調整します。テストが何かを提供していることを確認する必要があることに注意してください。

私はおそらく、その後、それぞれのそれ()テストでbeforeEach()に出itemListの宣言を移動し、わずかにそれを変更したい:

itemList[0].guestLastName = ''; 

を別のノートで、私は、サードパーティのライブラリを取得をお勧めしたいですあなたの未定義/ヌルチェックを処理するためのRamdaやLodashなどif(!_。isNil(guestLastName)){}は、たとえば3つのテストすべてをカバーします。

+0

詳しい説明や例を教えてください。申し訳ありません、私はここで新しい蜂です – Smitha