2016-08-06 11 views
1

最初に私はthis Stack Overflowの質問を読んだので、私の同じ問題のようには見えません。Zombie.js jQuery読み込みエラー 'j.getClientRectsは関数ではありません'

基本的に私はNode.jsサイトでいくつかのテストを実行するためにMochaとZombie.jsを使用しようとしています。

ユーザーを作成できるかどうかを確認しようとしています。最後に、私のブートストラップモードが存在するかどうかをチェックしたいと思います。基本的には、EJS ifステートメントでブートストラップモーダルをラップしているので、存在しない可能性があります。だからこそ、私はその上でテストを実行しようとしています。

現在のところ、browser.assert.success();で作業していないので、私は現在、要素を確認する前にこれを解決しようとしています。

browser.visit('/login', function() { 
    browser.fill('email', '[email protected]'); 
    browser.fill('password', 'testtest'); 
    browser.pressButton('Login').then(function() { 
     browser.assert.success(); 
    }).then(done, done); 
}); 

この場合、ブラウザが現在表示されているページで次のコードを実行する必要があります。

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

このユニットテストを実行すると、次のエラーが表示されます。

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をロードしていないか、エラーが発生しています。しかし、その前のStack Overflowの質問と回答では、Zombie.jsがjQueryをロードできるように見えます。

jombie.jsでjQueryを読み込めませんか?これをどうすれば解決できますか? jQueryを使ってページをテストするのはとても簡単です。何か案は?

追加情報などが必要な場合はお知らせください。ありがとう。

EDIT何らかの理由でjQueryバージョン1.11.3にダウングレードするとエラーが消えてしまいます。これにはどんな理由がありますか?

答えて

1

このバグが修正されていますhttps://github.com/assaf/zombie/issues/1031

は私 が望んでいたよりも硬いした問題の修正としてjsdom 8/9を採用します。特定の失敗を回避するために、 getClientRects()のダミー実装を追加するのはかなり簡単です。私はそれを試してみる とはどのように行くのかを見る

getClientRects()のスタブ実装を追加することは簡単でした。私はこの特定の失敗に対する修正を含む5.0.1を公開しました。

mdlavin

関連する問題