Ich versuche gerade einen Abnahmetest für eine verschachtelte Route, die dieselbe Komponente zweimal verwendet, aber mit anderen Argumenten. Das funktioniert einwandfrei, wenn ich es normal ausführe, aber während ich den Akzeptanztest durchführe, bemerke ich, dass die Argumente der Komponente nicht aktualisiert werden, was dazu führt, dass mein Test fehlschlägt. Hier ist ein Code Beispiel:Ember.js: Komponentenattribut beim Test nicht zurückgesetzt
In index.hbs
ich habe:
{{index-view model=model type='location'}}
Meine index-view
Komponente wie folgt aussieht:
<h1>{{title}} List</h1>
{{listing-table model=model type=type}}
von im listing-table
auf ein Element klicken, dann gehe ich auf die locations.show
Route, die eine link-to
die locations.show.devices
Route enthält. Die locations.show.devices
Route enthält:
{{listing-table model=model.devices type='device' exclude='locationName'}}
Doch meine Abnahmen, I (von Echo aus diesen Attributen in der Komponente Javascript) sehen kann, dass während model
und type
aktualisiert werden, wird exclude
immer auf, was auch immer wurde eingestellt wenn die Komponente ursprünglich aufgerufen wurde.
Nun, ich habe überprüft (via console.log()
), ob die Komponente wiederverwendet wird oder nicht, und ich konnte sehen, dass beide init()
und didDestroyElement()
werden zweimal genannt, was bedeutet, dass die Komponente zweimal über einen gesamten Lebenszyklus geht. Ich kann jedoch nicht wirklich verstehen, warum mein Argument exclude
überhaupt nicht aktualisiert wird, und warum geschieht dies nur während des Abnahmetests?
This is a stripped down version of what I'm doing (natürlich funktioniert es auf Twiddle, aber nicht im wirklichen Leben!).
Können Sie Ihre fragliche Komponente einfügen? Es klingt, als wäre etwas mit Ihrer spezifischen Komponente nicht in Ordnung ... – acorncom
Nicht sicher, ob dies das Problem beheben wird, aber der Status kann geteilt werden, wenn Sie den Standardwert einer Eigenschaft auf ein Array oder Objekt setzen. Es sieht so aus, als würdest du sowohl das _ als auch _ die Standardeinstellungen in 'init()' zurücksetzen, also bin ich mir nicht sicher, ob das das Problem verursacht. Hier finden Sie weitere Informationen zum Freigabestatus: https://stackoverflow.com/a/19071065/916734 –
@acorncorn: [hier] (https://gist.github.com/finferflu/f4832e7dd6e3bcc78bbe5a0abfd87ee3) ist meine Komponente js. – finferflu