Zombie.js jQuery加载错误'j.getClientRects不是一个函数'

所以首先我已经阅读了这个堆栈溢出问题,它看起来不像我的同一个问题。

基本上我试图使用Mocha和Zombie.js在我的Node.js网站上运行一些testing。

我试图检查,看看我是否可以创build一个用户。 最后我想检查一下,看看我的bootstrap模式是否存在。 基本上我有引导模式包装在EJS if语句,所以有挑战性的机会,它可能不存在。 所以这就是为什么我试图运行testing。

但是目前它甚至没有使用browser.assert.success(); 所以我现在只是试图解决这个问题,然后继续检查元素。

 browser.visit('/login', function() { browser.fill('email', 'test1@test.com'); browser.fill('password', 'testtest'); browser.pressButton('Login').then(function() { browser.assert.success(); }).then(done, done); }); 

在这种情况下,我应该在浏览器当前所在的页面上运行以下代码。

 <script> $("#paymentModal").modal('show'); </script> 

运行这个unit testing时,会给我下面的错误。

 https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js:3 }return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpan TypeError: j.getClientRects is not a function at k (https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js:3:26891) at Object.n.extend.pixelMarginRight (https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js:3:25936) at a.getComputedStyle.Sa (https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js:3:27592) at Function.n.extend.css (https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js:3:30895) at https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js:4:520 at Y (https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js:3:4661) at n.fn.extend.css (https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js:4:361) at c.setScrollbar (http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js:6:18612) at c.show (http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js:6:14692) at .<anonymous> (http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js:6:13878) 

在我看来,由于某种原因,Zombie.js不在该页面加载jQuery或有错误。 但在前面的堆栈溢出问题和答案在问题的开始看起来像Zombie.js可以加载jQuery。

你不能用Zombie.js加载jQuery吗? 我怎样才能解决这个问题? 看起来像一个非常简单的事情来testing页面与jQuery。 有任何想法吗?

让我知道如果你需要任何额外的信息或任何东西。 谢谢。

编辑出于某种原因降级到jQuery版本1.11.3似乎工作,错误消失。 有什么理由呢?

这个bug已修复: https : //github.com/assaf/zombie/issues/1031

采取jsdom 8/9作为你的问题的修复比我想要的更难。 为getClientRects()添加一个虚拟实现只是为了避免特定的失败。 我会尝试,看看它是如何去的

添加getClientRects()的存根实现很简单。 我已经发布了5.0.1,修复了这个特定的故障。

mdlavin