2017-02-20 1 views
0

J'essaie de stub une méthode qui prend des arguments.Stub une fonction avec des arguments

J'utilise normalement mon objet comme ceci:

const res = await Obj.find('admin', 'type'); 

Cela fonctionne. Il renvoie soit null ou un objet.

Je Stub normalement cela comme si:

sandbox.stub(Obj.prototype, 'find', function() { 
    return Promise.resolve({ id: 123 }); 
}); 

Je voudrais qu'il bouchonner afin que les arguments soient pris en compte. J'ai lu http://sinonjs.org/docs/#stubs et il est censé ressembler à ce qui suit:

const stub = sinon.stub(Obj.prototype.find); 
stub.withArgs('admin', 'type') 
    .returns(Promise.resolve({ id: 123 })); 
stub.withArgs('user', 'type').returns(null); 

Je reçois cependant l'erreur:

TypeError: Attempted to wrap undefined property undefined as function 
    at Object.wrapMethod (node_modules/sinon/lib/sinon/util/core.js:114:29) 
    at Object.stub (node_modules/sinon/lib/sinon/stub.js:67:26) 

console.log(Obj.prototype.find); résultats dans:

[Function: find] 
+0

Qu'est-ce que c'est à la ligne 67, colonne 26 de stub.js? – rasmeister

Répondre

0

Arghhh, j'étais presque correct. Ci-dessous le code de travail:

const stub = sinon.stub(Obj.prototype, 'find'); 
stub.withArgs('admin', 'type') 
    .returns(Promise.resolve(new User({ id: 123 }))); 
stub.withArgs('user', 'type').returns(null);