最近將 angularjs 應用程式從 1.5.11 更新到 1.8.2
這破壞了我們的幾個單元測驗。所有人似乎都在拋出錯誤:
TypeError: Attempting to configurable attribute of unconfigurable property.
經過一些除錯后,只要我們的指令規范之一呼叫,就會發生這種情況$compile()
這是指令規范進行的呼叫之一的副本:
element = angular.element('<input id="labels" type="hidden" ui-select2="select2Options" ng-model="labels">');
compiled = $compile(element)(scope);
$(document.body).append(element);
element.scope().$apply();
我查看了檔案,發現與 $compile 更改有關的唯一參考與洗掉 preAssignBindingsEnabled 函式有關。它看起來像在 1.6 之前,默認情況下是打開的。在 1.6 中,默認情況下它是關閉的,但如果您明確設定標志,則支持。從 1.7 開始,您不再能夠設定標志。
我不確定這是否是我的問題的原因,但通讀檔案,我不確定此更改是否真的相關?代碼按預期編譯和作業,只是抱怨的測驗。任何幫助是極大的贊賞!
uj5u.com熱心網友回復:
這是一個快速解決方法,但可能有助于確定最終解決方案:
為了解決這個問題,我們將 angular-mocks-1.8.2.js 降級為 angular-mocks-1.6.4.js,因為我們的單元測驗鏈中的某些東西似乎正在使用 compileProvider.preAssignBindingsEnabled() 方法。
我們還將 Jasmin/Karma 升級到了最新版本,但不確定這是否真的是解決方案的一部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/428400.html
