我目前正在嘗試對嵌套路由進行驗收測試,該測試使用相同的組件兩次,但使用不同的參數。這在我正常運行時工作正常,但是當我運行驗收測試時,我注意到組件的參數沒有被更新,這導致我的測試失敗。下面是一些示例代碼:Ember.js:組件屬性在測試時未復位
在index.hbs
我:
{{index-view model=model type='location'}}
我index-view
組件看起來是這樣的:
<h1>{{title}} List</h1>
{{listing-table model=model type=type}}
通過點擊一個元素在listing-table
,我然後去locations.show
路由,其中包含link-to
路由的locations.show.devices
路由。該locations.show.devices
路由包含:
{{listing-table model=model.devices type='device' exclude='locationName'}}
然而,在我的驗收測試,我可以看到(呼應出器件的javascript這些屬性),雖然model
和type
正在更新,exclude
始終設置到任何設置當組件最初被調用時。現在
,我已檢查(通過console.log()
)的組件是否被重複使用或不,我可以看到,無論init()
和didDestroyElement()
被調用兩次,這意味着該組件將經歷一個整個生命週期的兩倍。但是,我無法真正理解爲什麼我的exclude
參數根本沒有被更新,爲什麼只有在驗收測試時纔會發生這種情況呢?
This is a stripped down version of what I'm doing(當然它適用於Twiddle,但不適用於現實生活!)。
你能否粘貼有問題的組件?這聽起來像某些東西是與你的特定組件衝突... – acorncom
不知道這是否會解決問題,但如果您將屬性的默認設置爲數組或對象,則狀態可以共享。看起來你正在做這兩件事,並且重置'init()'中的默認值,所以我不確定這是否是導致問題的原因。以下是有關共享狀態的更多信息:https://stackoverflow.com/a/19071065/916734 –
@acorncorn:[here](https://gist.github.com/finferflu/f4832e7dd6e3bcc78bbe5a0abfd87ee3)是我的組件的js。 – finferflu