2017-01-23 16 views
3

私は、DOM要素の一部がngIfによって削除されたかどうかを調べるテストをしています。 fixture.debugElement.query(By.css(".button-area"))を使用してDOMをチェックすると、resultnullまたはDOM要素のいずれかになります。expect(result).toBe(null)がテストに失敗した場合、テストはフリーズします。 (Angular 2、Jasmine)

nullの場合、次のテストはうまくいきます。しかし、テストresultに要素が含まれている場合、単にテストに失敗しないだけで、はブラウザをフリーズします。

テストでは、次のようになります。

var result = fixture.debugElement.query(By.css(".button-area")) 
expect(result).toBe(null) 

私も同じ結果になりexpect(result).toEqual(null).toBeFalsy()を試してみました。

DOM要素が正しく削除されたかどうかをテストする適切な方法は何ですか?これは角2またはでバグかもしれません

fixture.debugElement.query(By.css(".button-area"))

:私はこの問題を発見した 2017年1月23日

UPDATEがで返される要素にspecifcですジャスミン。 document.getElementByClassName("button-area")を使用しても問題はなく、テストは正常に動作します。

答えて

1

これは、ジャスミンや角度のバグのようですので、あなたがバインドしている場合は、ここで迅速な回避策です:問題が解決されたときに

var result = fixture.debugElement.query(By.css(".button-area")) 
expect(result === null).toBeTruthy() 

独自のコードでこの問題を解決することを期待すべきです。

+1

問題については、この説明を確認します。https://medium.com/@martatatiana/poor-detective-angular2-browser-crash-and-debugelement-f0a651dbf33 それとしてdebugElementを横断するとき、基本的にエラーが生成されるようです依存関係の巨大な木を持っています。したがって、関数の引数を期待して巨大なオブジェクトを避けてください。 – robertohuertasm

関連する問題