5

react-dnd の実装をテストしようとしています。ドロップ関数の 1 つで、関数を使用してmonitor.getInitialClientOffset()オフセットを取得しています。このメソッドをスタブして、特定のオフセットを返し、それをアサートできるようにしたいと考えています。オンですが、これを理解できません。私のテストでは、私が使用しています

const WrappedContext = wrapInTestContext(ContextArea);
const page = mount(<WrappedContext />);
const manager = page.get(0).getManager();
const backend = manager.getBackend();

// Couple finds to get the right source and target ids

backend.simulateBeginDrag([sourceId])
backend.simulateHover([targetId])
backend.simulateDrop();
backend.simulateEndDrag();

(これはhttps://gaearon.github.io/react-dnd/docs-testing.htmlの標準の wrapInTestContext を使用しています)

ドロップ関数はテスト バックエンドからモニターに渡されますが、そのスタブ バージョンをシミュレーション メソッドに渡す方法がドキュメントにありません。

4

1 に答える 1

5

したがって、テスト バックエンドが使用しているモニターにアクセスして、次のようにメソッドをスタブ化できることがわかります。

  const manager = page.get(0).getManager();
  const backend = manager.getBackend();
  const monitor = manager.getMonitor();

  sinon.stub(monitor, 'getInitialClientOffset', () => {
    return {
      x: 10,
      y: 20,
    };
  });

  sinon.stub(monitor, 'getDifferenceFromInitialOffset', () => {
    return {
      x: 2,
      y: 4,
    };
  });

そして、ドロップ関数では、これらは、使用しているあらゆる種類の数学で使用される値です。

于 2016-07-07T21:02:22.613 に答える