En Sinon puedo hacer lo siguiente:
var myObj = { prop: 'foo' }; sinon.stub(myObj, 'prop').get(function getterFn() { return 'bar'; }); myObj.prop; // 'bar' Pero, ¿cómo puedo hacer lo mismo con Jest? No puedo simplemente sobrescribir la función con algo como jest.fn() , porque no reemplazará al getter
"no se puede establecer el valor de get"
Para cualquier otra persona que se encuentre con esta respuesta, Jest 22.1.0 introdujo la capacidad deespiar los métodos getter y setter .
Editar: como en la respuesta de scieslak a continuación, debido a que puede espiar los métodos getter y setter, puede usar simulacros de Jest con ellos, al igual que con cualquier otra función:
class MyClass { get something() { return 'foo' } } jest.spyOn(MyClass, 'something', 'get').mockReturnValue('bar') const something = new MyClass().something expect(something).toEqual('bar')Podrías usar Object.defineProperty
Object.defineProperty(myObj, 'prop', { get: jest.fn(() => 'bar'), set: jest.fn() });Si solo te importa espiar, busca la respuesta de @Franey. Sin embargo, si realmente necesita agregar un valor para el getter, así es como puede hacerlo:
class Awesomeness { get isAwesome() { return true } } describe('Awesomeness', () => { it('is not always awesome', () => { const awesomeness = new Awesomeness jest.spyOn(awesomeness, 'isAwesome', 'get').mockReturnValue(false) expect(awesomeness.isAwesome).toEqual(false) }) })