Javascript 运行使用使用小部件工厂构建的jQuery插件的jasmine规范时出现TypeError

Javascript 运行使用使用小部件工厂构建的jQuery插件的jasmine规范时出现TypeError,javascript,jquery,jasmine,jasmine-jquery,Javascript,Jquery,Jasmine,Jasmine Jquery,我正在使用一个名为内联编辑的jQuery插件 当代码在页面中实际使用时,一切正常 但是,我的测试套件失败,出现以下错误: TypeError:无法调用未定义的方法“remove” 我在这个特定插件的clear方法中跟踪到它被触发。可以找到它的源文件 该代码中有两个相关位: 1-\u init功能 self.element.addClass("toggleEdit toggleEdit-edit toggleEdit-edit-" + self._tag(self.element)) //s

我正在使用一个名为内联编辑的jQuery插件

当代码在页面中实际使用时,一切正常

但是,我的测试套件失败,出现以下错误:

TypeError:无法调用未定义的方法“remove”

我在这个特定插件的
clear
方法中跟踪到它被触发。可以找到它的源文件

该代码中有两个相关位:

1-
\u init
功能

self.element.addClass("toggleEdit toggleEdit-edit toggleEdit-edit-" +   
self._tag(self.element))
//store reference to preview element
.data("toggleEdit-preview", self.p);
self.element.data("toggleEdit-preview").remove();
如您所见,当插件第一次实例化时,它使用
self
上的
data
结构来存储新创建的元素

2-清除
功能

self.element.addClass("toggleEdit toggleEdit-edit toggleEdit-edit-" +   
self._tag(self.element))
//store reference to preview element
.data("toggleEdit-preview", self.p);
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
});

我正在查看toggleEdit的源代码,似乎只有在设置self.element.data之前才调用函数clear:

if (typeof self.element.data("toggleEdit-preview") !== "undefined") {
     self.clear();
     self.disableEvents();
}
在销毁功能中:

destroy: function() {
         var self = this;
         self.clear();
         self.disableEvents();
         $.Widget.prototype.destroy.apply(self, arguments);
       }    

由于第一个调用似乎是受保护的,我问您一个有点愚蠢的问题:是否有可能两次调用destroy?

发现了我的问题:jQuery+jQuery UI duo的旧版本。升级它们可以解决异常。

根据我的测试,它不会被调用两次。这就是让我讨厌的地方。jQuery按照小部件工厂协议调用Destroy,但调用它时,它似乎引用了不同的
this