Sinon: Documentación para el espionaje y el stubbing de Getter / Setter

Creado en 2 nov. 2017  ·  10Comentarios  ·  Fuente: sinonjs/sinon

Oigan todos,

¿Existe actualmente documentación sobre cómo utilizar las funciones de espionaje getter y setter descritas en el n. ° 1205? Si no, podría leer el código y las pruebas y agregarlo si es necesario. Busqué bastante y no lo vi por ningún lado, pensé que lo preguntaría. Gracias.

Documentation Help wanted Property accessors pinned

Comentario más útil

Se ha implementado y lo estoy usando. Descubrí cómo revisando las pruebas en el n. ° 1205. Encontré las pruebas aquí .

Se hace así:

spy = sinon.spy(className, 'nameOfGetterFunction', ['get'])

¿Debería estar esto en los documentos? ¿O esa implementación ni siquiera es algo conocido en este momento?

Todos 10 comentarios

¿Es esto lo que estabas buscando?

También veo esto escrito, pero parece desactualizado (solía ser cierto):

Si necesita stub getters / setters o propiedades sin función, entonces debería usar sandbox.stub

Los talones normales se pueden usar para eso ahora.

Para talones que lo parezcan. No sé si hay nada en los documentos de espionaje para ellos.

Hmm ... En realidad, no creo que se haya implementado el espionaje para getters / setters. Realmente tampoco sé por qué. La implementación básicamente sería algo como esto:

fn=Object.getOwnPropertyDescriptor(obj, prop).get
spy=sinon.spy(fn);
Object.defineProperty(obj, prop, { get: spy })

¿Te importaría intentarlo?

Se ha implementado y lo estoy usando. Descubrí cómo revisando las pruebas en el n. ° 1205. Encontré las pruebas aquí .

Se hace así:

spy = sinon.spy(className, 'nameOfGetterFunction', ['get'])

¿Debería estar esto en los documentos? ¿O esa implementación ni siquiera es algo conocido en este momento?

Sería genial tenerlo documentado, ¡gracias!

Seguro, lo eliminaré.

Este problema se ha marcado automáticamente como obsoleto porque no ha tenido actividad reciente. Se cerrará si no se produce más actividad. Gracias por sus aportaciones.

¿Hay alguna forma de espiarlo sin clase (directamente por objeto)?
Solo tengo un objeto allí en la especificación y no podría requerir la clase del getter setter, ¿hay alguna otra forma también?

@ mouse9 No está claro lo que está preguntando, y cómo se relaciona eso con el espionaje / stubbing de los getters. Tampoco entiendo a qué te refieres con clases. Las clases no tienen un significado real en javascript y, en la mayoría de los casos, lo que usted considera clases no son más que objetos.

En cualquier caso, estamos tratando de mantener ordenada la lista de problemas de GitHub y centrada en los errores y las discusiones de características. Este ticket parece una pregunta de uso; publíquelo en etiquételo con sinon , para que la comunidad más grande pueda ayudar a responder sus preguntas.

Si cree que su tema es un problema con Sinon, abra un nuevo ticket y siga las pautas para informar un problema .

Para el código de @loganhuskins :
spy = sinon.spy(className, 'nameOfGetterFunction', ['get'])

Descubrí que, en afirmación, es necesario afirmar en spy.get como:
sinon.assert.calledOnce(spy.get);

Anteriormente se afirmó solo como espía y no funcionó.

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