0

Je suis en train d'espionner tous les params transmis à une fonction effet secondaire-ey, qui se compose d'un conteneur de fonction anonyme recevant une finale paramespion sur tous args passé à une composition de fonction

(en fait je veux bouchonner, mais espionne serait un début)

classA.js

const classB = require(`classB.js`) 

const doWork = (a, b, c, d, e) => { 
    //do things with a, b, c, d, e to make x, y, z… 
    return classB.thingToSpyOn(a, b, c, x, y)(z) //<=note curry here 
} 

ClassA.spec.js

const classA = require(`classA.js`) 
const classB = require(`classB.js`) 

describe(`doWork`,() => { 
    sinon.spy(classB, 'thingToSpyOn') 

    classA.doWork(“foo”, “bar”, “baz”, “bing”, “boing”) 

    //now i can get the spy to tell me what it received as a, b, c, x, y 
    console.log(classB.thingToSpyOn.args) 
    ... 

mais comment consigner ce qui a été reçu comme z?

Répondre

1

Un stub est réellement nécessaire pour cela:

describe(`doWork`,() => { 
    let zSpy = sinon.spy(); 
    sinon.stub(classB, 'thingToSpyOn').returns(zSpy); 

    classA.doWork('foo', 'bar', 'baz', 'bing', 'boing') 

    console.log(classB.thingToSpyOn.args) 
    console.log(zSpy.args) 
}) 

Cela ne remet pas par la fonction cari, mais ce n'est pas nécessaire si vous voulez seulement vérifier l'argument qui est passé.

+0

c'est exactement ce dont j'avais besoin. Merci beaucoup! – tonywoode