問題描述
隨機失敗的驗收測試錯誤:斷言失敗:在銷毀對像上調用集合 (randomly failing acceptance‑tests with Error: Assertion Failed: calling set on destroyed object)
我的一些驗收測試(涉及操作)在與所有其他測試一起運行時隨機失敗,但當我單獨運行它們時從未失敗。
錯誤:斷言失敗:調用集在我的操作中觸發了銷毀對象
我在以用戶身份使用表時沒有遇到任何問題,因此這些問題僅出現在測試中。所以我不確定這是否只是因為應用程序在每次運行後都沒有正確銷毀。
我能否以某種方式了解對象即將被銷毀的原因或哪些觀察者正在阻止它?
foos/index/route.js
startFoo(foos) {
foos.forEach(function(foo) {
foo.set('status', 'active');
foo.save();
});
},
這個 action
被傳遞到一個組件(表),它顯示了一個 <代碼>foo‑模型。
參考解法
方法 1:
Checking isDestroyed
prior to setting should do the trick
isSelected: computed('table.selectedRows.[]', {
get(/*key*/) {
return this.get('table').isSelected(this.get('content'));
},
set(/*key, value*/) {
if (this.get('isDestroyed')) {
return;
}
this.get('table').selectRow(this.get('content'));
return this.get('table').isSelected(this.get('content'));
},
}),
(by Mike、Patsy Issa)