2017-01-07 13 views
2

こんにちは、私はangular2を初めて使い、ちょうどヒーローの例を終了しました。私はユニットテストを追加すると良いと思って、私はhero.serviceから始めました。ジャスミンangle2チェック配列の長さtoEqual return true

この

getHeroes()ヒーローサービスである:プロミス{

return this.http.get(this.heroesUrl).toPromise().then(response=>response.json().data as Hero[]).catch(this.handleError); 

}

これはコンソールから私のユニットテスト

const fakedHeroes:Hero[]=[ 
    { id: 1, name: 'Windstorm' }, 
    { id: 2, name: 'Bombasto' }, 
    { id: 3, name: 'Magneta' }, 
    { id: 4, name: 'Tornado' } 
] 
describe('get Heroes test',()=>{ 
    let service:HeroService=null; 
    let backend:MockBackend=null; 
    beforeEach(inject([HeroService,MockBackend],(heroSerivce:HeroService,mockBackend:MockBackend)=>{ 
     service=heroSerivce; 
     backend=mockBackend; 
    })); 
    it('get heroes',(done)=>{ 

     backend.connections.subscribe((connection:MockConnection)=>{ 
      let options=new ResponseOptions({status: 200, body: {data: fakedHeroes}}) 
      connection.mockRespond(new Response(options)); 
     }) 
     service.getHeroes().then(response=>{ 
      // console.log(response) 
      console.log(response.length) 
      expect(response.length).toEqual(2,'should be 4') 

     }); 

     done(); 
    }) 
    }) 

であり、私が見ることができます応答の長さは4ですが、テストは正常に終了します。

私はここで何かを忘れましたか?

アップデート1:

私はすべて成功し

答えて

0

を渡すdoneのポイントは、それがあるの両方

expect(response.length).toEqual(2,'should be 4') 
expect(response.length).toBe(2,'should be 4') 

を試してみましたが、あなたが解決するために、非同期タスクを待つことができます。しかし、あなたは何も待っているわけではありません。あなたはそれをと同時にと呼んでいます。

service.getHeroes().then(res => { 
    expect(...) 

    done() 
}) 
+0

ありがとうございます@peeskillet(英語) –

関連する問題