How can I spy on a getter property using jasmine?

jasmine, javascript

Solution

Since Jasmine 2.6, this has been possible with `spyOnProperty`. To spy on the accessors for the `foo` property, do:

spyOnProperty(o, 'foo')

This allows you to replace the `set` and/or `get` accessor functions for an accessor property with a spy function. You can specify or `set` or `get` only as a third argument:

spyOnProperty(o, 'foo', 'get')

If you are stuck using an earlier version and cannot upgrade for some reason, you may be able to merge the pull request that added this feature into your local copy of the code.

Problem

How can I spy on a getter property using jasmine? ``` var o = { get foo() {}, }; spyOn(o, 'foo').and.returnValue('bar'); // Doesn't work. ``` This also does not work AFAICT: ``` spyOn(Object.getOwnPropertyDescriptor(o, 'foo'), 'get').and.returnValue('bar'); ```

Original source