我正在使用一个名为toggleEdit的 jQuery 插件进行内联编辑。
当代码在页面中实际使用时,一切正常。
但是,我的测试套件失败并出现以下错误:
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
函数尝试访问该结构并检索元素。那时,在 jasmine 规范中,它会因上述异常而失败。
有没有人见过类似的东西?
编辑:
这是我的规范,它是能够重现错误的最简单的代码:
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