2017-09-26 19 views
1

カルマを使ってジャスミンのforEachループをテストするには?次のように コンポーネントコードは: -TypeError:studentsList.forEachは関数ではありません。ジャスミンユニットテスト(角2)

getData(studentsList:any, day:any, game:any){ 
let strength:any; 
let location:string; 
    if(studentsList){ 
    studentsList.forEach(value => { 
    strength=value.schedule[day][game].strength; 
    location=value.schedule[day][game].location; 
}); 
} 
} 

studentsList中に存在するデータがある: -

(編集: - データは、それがこのようになり更新される)

[{ 
     "activityName": "tournament1", 
     "schedule": { 
      "first": { 
       "Baseball": { 
        "strength": 23, 
        "location": "abc" 
       } 
      }, 
      "second": { 
       "Cricket": { 
        "strength": 20, 
        "location": "bcd" 
       } 
      }, 
      "third": { 
       "Football": { 
        "strength": 19, 
        "location": "cde" 
       } 
      } 
     } 
    }, 
{ 
     "activityName": "tournament2", 
     "schedule": { 
      "first": { 
       "Baseball": { 
        "strength": 23, 
        "location": "abc" 
       } 
      }, 
      "second": { 
       "Cricket": { 
        "strength": 20, 
        "location": "bcd" 
       } 
      }, 
      "third": { 
       "Football": { 
        "strength": 19, 
        "location": "cde" 
       } 
      } 
     } 
    },{ 
     "activityName": "tournament3", 
     "schedule": { 
      "first": { 
       "Baseball": { 
        "strength": 23, 
        "location": "abc" 
       } 
      }, 
      "second": { 
       "Cricket": { 
        "strength": 20, 
        "location": "bcd" 
       } 
      }, 
      "third": { 
       "Football": { 
        "strength": 19, 
        "location": "cde" 
       } 
      } 
     } 
    }] 

これは私が試したテストです: -

it('should check getData()',() => { 
     fixture = TestBed.createComponent(GameComponent); 
     const app = fixture.debugElement.componentInstance; 
     const data={ 
    "activityName": "tournament", 
    "schedule": { 
     "first": { 
      "Baseball": { 
       "strength": 23, 
       "location": "abc" 
      } 
     }, 
     "second": { 
      "Cricket": { 
       "strength": 20, 
       "location": "bcd" 
      } 
     }, 
     "third": { 
      "Football": { 
       "strength": 19, 
       "location": "cde" 
      } 
     } 
    } 
} 

app.getData(data, 'first', 'Baseball'); 
fixture.detectChanges(); 
expect(app.location).toContain('abc'); 
expect(app.location).toContain('bcd'); 
expect(app.location).toContain('cde'); 
} 

しかし、私はこれを得るために続けている各機能ではありません。テストで静的なデータを与える代わりに、私は別の方法で行くべきですか?

+1

'forEach'が配列私の問題は、= [{ "activityName"'データを通過させることによって解決された –

答えて

1

studentsListが対象ですが、forEachは配列上にのみ存在します。 for (var key in studentsList)を使用すると、オブジェクトのキーを繰り返し処理できます。

+0

おかげで必要: "大会"、 "スケジュール":{ "最初の":{ "野球":{ "強":23、 "場所": "ABC" } }、 "第二" :{ "クリケット":{ "強":20、 "場所": "BCD" } } 、 "third":{ "Football":{ "strength":19、 "location": "cde" } } } }] '配列として – Jia

関連する問題