2012-06-07 4 views
8

Ich arbeite an einer Backbone.js-Anwendung und beim Hinzufügen von Tests mit Jasmine & Sinon hatte ich Probleme, die Sichtbarkeit einiger DOM-Elemente zu ermitteln: einige wurden erkannt als nicht sichtbar in den Tests, während ich sie in meiner Anwendung richtig sehen konnte.Ich kann die Sichtbarkeit von gerenderten Elementen in meiner Backbone-Ansicht nicht testen.

I ein kleines Beispiel erstellt, die das Problem repliziert wird der gleiche Test zweimal auf zwei Sätze von Elementen auszuführen:

  • der erste Satz direkt in SpecRunner.html vorhanden ist
  • die zweite hat als Backbone Ansicht gerendert

Der Test selbst jQuery.is(':visible') (über Jasmin-jQuerys .toBeVisible()) verwendet wissen, ob Elemente sichtbar sind oder nicht. Es gilt für den ersten Satz, nicht für den zweiten.

Ich teilte den Code hier als GitHub Projekt: https://github.com/maximevaly/3789_js

Ich glaube, ich etwas vergessen, oder vielleicht eine Bibliothek missbraucht, aber ich kann meine Finger nicht so auf sie setzen, wenn Sie keine Ahnung haben ... :)

Danke! Maxime

Antwort

8

Das Problem ist, dass Ihre StuffView.el nicht an DOM angeschlossen ist, daher ist immer nicht sichtbar. Sie missverstehen wahrscheinlich className und tagName Parameter: Sie werden nicht als Selektoren verwendet, sondern um ein brandneues Element zu konstruieren.

Dies behebt den zweiten Test.

el : "div.container", 
//tagName : 'div', 
//className : 'container', 

Alternativ können Sie die Ansicht auf DOM manuell im Test befestigen

$("body").append(this.view.el); 
+0

Ich wusste, habe ich etwas falsch, danke! :) –

Verwandte Themen