Я использую плагин jQuery с именем toggleEdit для встроенного редактирования.
Все работает нормально, когда код действительно используется на странице.
Однако мой набор тестов завершается с ошибкой:
TypeError: Cannot call method 'remove' of undefined
Я разыскал его, чтобы вызвать изнутри clear
метода этого конкретного плагина. Его исходный файл можно найти здесь .
В этом коде есть два соответствующих бита:
1- _init
функция
self.element.addClass("toggleEdit toggleEdit-edit toggleEdit-edit-" +
self._tag(self.element))
//store reference to preview element
.data("toggleEdit-preview", self.p);
Как вы можете видеть, когда плагин создается впервые, он использует структуру data
в self
для хранения вновь созданного элемента.
2- clear
функция
self.element.data("toggleEdit-preview").remove();
Функция clear
затем пытается получить доступ к этой структуре и извлечь элемент. Именно тогда, когда он находится внутри спецификации жасмина, он выходит из строя с вышеупомянутым исключением.
Кто-нибудь видел что-нибудь подобное?
EDIT:
Это моя спецификация, это самый простой фрагмент кода, способный воспроизвести ошибку:
it("should update the given attribute on the server", function(){
$('#user-details input, #user-details select').toggleEdit(); //this line triggers the error
});
http://alz.so/static/plugins/toggleedit/jquery.toggleedit.js