22

に相当する D3 を探していjQuery.fx.off = trueます。

D3 を使用するアプリのテスト (Mocha、QUnit などを使用) を作成しているとします。アプリにはいくつかの D3 アニメーションがあります ( あり.transition())。

アニメーションはテストには非常に適していません:

まず、彼らは遅いです。

第 2 に、これらは非同期であるため、テストのちらつきを簡単に引き起こす可能性があります。setTimeout理想的には、 / setInterval/への呼び出しを避ける必要がありますrequestAnimationFrame

すべての D3 アニメーションを無効にして、即座に (そして理想的には同期的に) 終了状態にジャンプする方法はありますか? (おそらく、オプションがない場合は、timer.jsにフックできますか?)

4

4 に答える 4

13

遷移をモックアウトする代わりに、最終状態に直接同期して遷移を実行することもできます。

D3.js v4 では、次を使用します。

function flushAllD3Transitions() {
    var now = performance.now;
    performance.now = function() { return Infinity; };
    d3.timerFlush();
    performance.now = now;
 }

D3.js v3 以前では、次のようにします。

function flushAllD3Transitions() {
    var now = Date.now;
    Date.now = function() { return Infinity; };
    d3.timer.flush();
    Date.now = now;
 }

d3 issue 1789も参照してください。

于 2014-03-21T07:10:05.727 に答える