2016-07-07 18 views
1

Ich versuche, meine Implementierung von react-dnd zu testen, und in einer meiner Drop-Funktionen verwende ich die monitor.getInitialClientOffset() Funktion, um einen Offset zu erhalten, und ich möchte diese Methode stub, um einen bestimmten Offset, dass ich zurückgeben kann dann behaupten, aber ich kann das nicht herausfinden. In meinem Test verwende ichWie stoße ich den Monitor beim Testen von react-dnd an?

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(); 

(Dies ist der Standard wrapInTestContext von https://gaearon.github.io/react-dnd/docs-testing.html verwenden)

Die Drop-Funktion einen Monitor aus dem Test-Backend übergeben wird und ich nicht eine Art und Weise in der Dokumentation eine Stub-Version davon an eine der Simulationsmethoden übergeben.

Antwort

1

So stellt sich heraus, dass Sie den Monitor zugreifen können, die der Test-Backend verwendet und dann Stub Methoden es wie folgt aus:

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, 
    }; 
    }); 

Und dann in der Drop-Funktion, das sind die Werte, die sein in jeder Art von Mathe verwendet, die Sie verwenden.