Je sinon voudrais tester ma promesse gestionnaire de détermination et promettre gestionnaire de rejet à l'aide mocha
, chai
et sinon
.En outre, j'ai le plugin sinon-chai
et sinon-stub-promise
plug-in mis en place.Testing promet avec mocha et chaï
Ceci est mon bloc d'instructions nécessitent:
var chai = require('chai');
var expect = chai.expect;
var sinonChai = require('sinon-chai');
chai.use(sinonChai);
var sinon = require('sinon');
var sinonStubPromise = require('sinon-stub-promise');
sinonStubPromise(sinon);
Ceci est mon suite de tests:
describe('Connect to github users',function(done){
var api = require('../users'),
onSuccess = api.onSuccess,
onError = api.onReject;
console.dir(api);
//the idea is not to test the async connection,the idea is to test
//async connection but to test how the results are handled.
var resolveHandler,
rejectHandler,
getPromise,
result;
beforeEach(function(){
resolveHandler = sinon.spy(onSuccess);
rejectHandler = sinon.spy(onError);
getPromise = sinon.stub().returnsPromise();
});
it('must obtain the result when promise is successful',function(){
result = [...];//is an actual JSON array
getPromise.resolves(result);
getPromise()
.then(resolveHandler)
.catch(rejectHandler);
expect(resolveHandler).to.have.been.called();//error
expect(resolveHandler).to.have.returned(result);
expect(rejectHandler).to.have.not.been.called();
done();
});
afterEach(function(){
resolveHandler.reset();
rejectHandler.reset();
getPromise.restore();
});
});
je me retrouve à obtenir cette erreur:
Connect to github users must obtain the result when promise is successful:
TypeError: expect(...).to.have.been.called.toEqual is not a function
at Context.<anonymous> (C:\Users\vamsi\Do\testing_promises\test\githubUsersSpec.js:94:46)
Les promesses bloquées sont-elles synchrones? – Bergi
L'implémentation est 'thenable' qui peut être chaînée avec tout ce qui a' then' incluant une promesse réelle * que je ne voudrais pas faire, donc j'utilise les 'resolves' et' rejects' pour tester un gestionnaire seulement. J'ai essayé ceci après avoir regardé [cette vidéo] (https://youtu.be/HHcEjAQ46Io?t=2213) où il capture des arguments à jQuery ajax callback de succès, – vamsiampolu
Ouais, je me demandais juste que vous vous attendiez à ce que les gestionnaires aient été appelés à droite après les avoir attachés. Les promesses normales échoueraient. – Bergi