2016-06-23 18 views
0

私はついにTTDに近づいた!テストは素晴らしいですが問題があります。私はHTTP呼び出しを行う関数をテストしており、resultというプロパティを持つ大きなJSONオブジェクトを受け取ります。 resultがオブジェクトの配列である、それはちょっと次のようになります。TypeScriptとジャスミンを使ったオブジェクト配列構造体のテスト

{ 
    itemsPerPage: 2, 
    numPages:1, 
    offset:0, 
    actualPage:1, 
    firstPostingOnPage:1, 
    lastPostingOnPage:2, 
    totalNumberOfJobs:2, 
    result: [ 
     { 
      jobPostingId:1, 
      postingVersionId:1, 
      title: 'first job', 
      applyOnlineLink: 'some link', 
      config: null, 
      jobStartDate: 1234567890, 
      postingVersionStartDate:1234567890, 
      postingVersionEndDate:1234567890 
     } 
    ] 
}; 

resultは、任意の長さが、決してゼロを持つことができます。結果の中のオブジェクトの構造をテストしたい。私は明らかに間違って何かをやっている

Expected: an object with {result: [{"jobPostingId":{},"postingVersionId":{},"title":{},"applyOnlineLink":{},"config":{},"jobStartDate":{},"postingVersionStartDate":{},"postingVersionEndDate":{}}] in any order} 
[2]   but: result no item in [{"jobPostingId":1,"postingVersionId":1,"title":"first job","applyOnlineLink":"some link","config":null,"jobStartDate":1234567890,"postingVersionStartDate":1234567890,"postingVersionEndDate":1234567890}, {"jobPostingId":2,"postingVersionId":1,"title":"second job","applyOnlineLink":"some link","config":null,"jobStartDate":1234567890,"postingVersionStartDate":1234567890,"postingVersionEndDate":1234567890}] matches: {"jobPostingId":{},"postingVersionId":{},"title":{},"applyOnlineLink":{},"config":{},"jobStartDate":{},"postingVersionStartDate":{},"postingVersionEndDate":{}} 

は、なぜそれがオブジェクトの各プロパティの後にオブジェクトを期待していないエラーを取得するよう

it('The object array should have an object that contains keys "jobPostingId, postingVersionId, title" ',() => { 

        let result:Observable<any> = sut.getJobs(); 

        return result.subscribe((content:any) => { 

         assertThat(content, hasProperty('result', 

          containsInAnyOrder({ 
           'jobPostingId': is(number()), 
           'postingVersionId': is(number()), 
           'title': is(string()), 
           'applyOnlineLink': is(string()), 
           'config': is(falsy()), 
           'jobStartDate': is(number()), 
           'postingVersionStartDate': is(number()), 
           'postingVersionEndDate': is(number()) 
          }) 
         )); 
        }); 
       }); 

これは失敗します。私のアプリでは、私は次のテストを持っていますオブジェクト配列から取得します。

ありがとうございました。申し訳ありませんが、私は愚かな質問をしました。これは働いていた私が間違っているなどマッチャーを使用していた

答えて

1

... ...

it('The object array should have an object that contains keys "jobPostingId, postingVersionId, title", etc.... ',() => { 

        let result:Observable<any> = sut.getJobs(); 

        return result.subscribe((content:any) => { 

         assertThat(content, hasProperty('result', 
          contains(
           hasProperties({ 
            'jobPostingId': is(number()), 
            'postingVersionId': is(number()), 
            'title': is(string()), 
            'applyOnlineLink': is(string()), 
            'config': is(null), 
            'jobStartDate': is(number()), 
            'postingVersionStartDate': is(number()), 
            'postingVersionEndDate': is(number()) 
           }), 
           hasProperties({ 
            'jobPostingId': is(number()), 
            'postingVersionId': is(number()), 
            'title': is(string()), 
            'applyOnlineLink': is(string()), 
            'config': is(null), 
            'jobStartDate': is(number()), 
            'postingVersionStartDate': is(number()), 
            'postingVersionEndDate': is(number()) 
           }) 
          ) 
         )); 
        }); 
       });