Sinon: Los stubs deben tener un "resuelve" y un "rechazo" para establecer resultados de promesa

Creado en 8 ago. 2015  ·  13Comentarios  ·  Fuente: sinonjs/sinon

Este es un azúcar de sintaxis muy simple:

var stub = sinon.stub();
stub.resolves("hello");
//is the same as
stub.returns(Promise.resolve("hello"));

stub.rejects(new Error("oh noes!"));
//is the same as
stub.returns(Promise.reject(new Error("oh noes!"));
Medium Feature Request Help wanted

Comentario más útil

¿Puedo hacer un sinon.stub().returnsArg(1) donde el talón devuelve una promesa? Estoy tratando de devolver el argumento como la resolución de mi promesa. No parece funcionar.

Todos 13 comentarios

Eso sería un buen azúcar, gracias por la sugerencia @mariusGundersen

Nuestro equipo tiene una pequeña biblioteca en npm que nos ha estado ayudando con este tipo de cosas, https://github.com/substantial/sinon-stub-promise , aunque la forma en que está implementada actualmente requiere una sintaxis de código auxiliar como: sinon.stub().returnsPromise() . ¿Pensamientos? En el ejemplo anterior, parece que esto supone una evaluación sincrónica, ¿verdad?

Me gusta mucho la sugerencia de

Simplemente pensé que usaría el Promise.resolve disponible globalmente, si existe, y si no, no funcionaría. Pero dejar que devuelva un objeto con un método then es una solución mucho mejor:

var stub = sinon.stub(); 
stub.resolves("hello"); 
//is the same as 
stub.returns({then: x => setTimeout(()  => x("hello"), 0)}); 
stub.rejects(new Error("oh noes!")); 
//is the same as 
stub.returns({then: x => undefined, catch: x => setTimeout(() => x(new Error("oh noes!")), 0)});

(escrito en el teléfono, puede tener errores)

Nuestro equipo escribió una pequeña biblioteca para proporcionar una funcionalidad similar. Tal vez esto ayude. Utiliza la biblioteca bluebird para promesas. https://www.npmjs.com/package/sinon-bluebird

+1 para soporte nativo de Promise

También hay un proyecto llamado sinon-as-promise que parchea el módulo sinon existente de su proyecto usando solo la promesa nativa para agregar semántica de resuelve / rechaza a los stubs.

Sería genial si esto o los cambios de uno de los otros módulos pudieran agregarse a sinon.

¿Puedo hacer un sinon.stub().returnsArg(1) donde el talón devuelve una promesa? Estoy tratando de devolver el argumento como la resolución de mi promesa. No parece funcionar.

Las preguntas de uso de

stub = (arg) => Promise.resolve(arg);

Lo mismo desde aquí: # 738

Hola a todos, en primer lugar, gracias por el excelente trabajo que han estado haciendo en Sinon.
Si desea implementar esto, también me encantaría intentarlo, hágamelo saber y comenzaré a trabajar en un relaciones públicas para eso.

@lucasfcosta , gracias por eso. Creo que @mroderick habló hace mucho tiempo sobre la integración de sinon-as-promised en Sinon, ¿no es así? Esa sería la solución más sencilla y no tengo objeciones.

@lucasfcosta Me encantaría ver un PR para integrar sinon-as-promised en la rama master Sinon

¿Fue útil esta página
0 / 5 - 0 calificaciones