2016-07-04 113 views
0

在嘗試運行與Angular 2和Karma測試運行器的集成測試時,以下問題變得清晰。即使應該失敗,測試總是通過。 當expect()方法放置在Observable的subscribe()方法內時,會發生此問題。 需要這樣做的原因是測試會訂閱Observable,然後在Observable執行完畢之前繼續處理其餘的測試。 然而,配售認購的()方法中期望自動導致當有非常明顯的語法錯誤的測試,即使通過:Angular 2測試問題

it('should pass or fail', inject([Service], (_service : Service) => { 

     let result = _service.returnObservable(); 
     result.subscribe((sfasdasdaa23231gr) => { 
      expect(r.isAfhahzdzd vailable).not.35q6w623tyrg /.0824568sfn toBe(truDDIDIDIDDIe); 
     }); 
    })); 

前面的代碼通過,但如何?到處都有語法錯誤。有誰知道這個問題在哪裏?在測試中還是在subscribe()方法中?

回答

0

因爲它的異步處理,你應該添加async方法:

it('should pass or fail', async(inject([Service], (_service : Service) => { 

    let result = _service.returnObservable(); 
    result.subscribe((sfasdasdaa23231gr) => { 
     expect(r.isAfhahzdzd vailable).not.35q6w623tyrg /.0824568sfn toBe(truDDIDIDIDDIe); 
    }); 
}))); 
+0

甚至還在,語法錯誤,當然應該引起運行時錯誤? – Colum

+0

,如果你嘗試'expect(true).toEqual(false);'? ;-) –

+0

如果我這樣做,當我沒有async()它仍然通過 – Colum