diff --git a/projects/spectator/jest/test/spy-object/spy-object.spec.ts b/projects/spectator/jest/test/spy-object/spy-object.spec.ts index a6304afa..dcfa5002 100644 --- a/projects/spectator/jest/test/spy-object/spy-object.spec.ts +++ b/projects/spectator/jest/test/spy-object/spy-object.spec.ts @@ -9,7 +9,7 @@ describe('SpyObject', () => { person.sayHi.andReturn('Bye!'); }); - it('should keep getters/setters', () => { + it('should enable spying on properties', () => { const person = createSpyObject(Person); person.birthYear = 1990; jest.spyOn(person, 'age', 'get').mockReturnValue(29); @@ -17,6 +17,14 @@ describe('SpyObject', () => { expect(person.age).toBe(29); }); + it('should enable setting properties by just assigning', () => { + const person = createSpyObject(Person); + person.birthYear = 1990; + (person as any).age = 29; + + expect(person.age).toBe(29); + }); + it('should allow setting properties', () => { const person = createSpyObject(Person); diff --git a/projects/spectator/src/lib/mock.ts b/projects/spectator/src/lib/mock.ts index 8965827c..d9aa186f 100644 --- a/projects/spectator/src/lib/mock.ts +++ b/projects/spectator/src/lib/mock.ts @@ -55,7 +55,8 @@ export function installProtoMethods(mock: any, proto: any, createSpyFn: Funct mock[key] = createSpyFn(key); } else if (descriptor.get && !mock.hasOwnProperty(key)) { Object.defineProperty(mock, key, { - get: () => null + set: value => (mock[`_${key}`] = value), + get: () => mock[`_${key}`] }); } } diff --git a/projects/spectator/test/spy-object/spy-object.spec.ts b/projects/spectator/test/spy-object/spy-object.spec.ts index c0e89bad..94b1ed34 100644 --- a/projects/spectator/test/spy-object/spy-object.spec.ts +++ b/projects/spectator/test/spy-object/spy-object.spec.ts @@ -17,6 +17,14 @@ describe('SpyObject', () => { expect(person.age).toBe(29); }); + it('should enable setting properties by just assigning', () => { + const person = createSpyObject(Person); + person.birthYear = 1990; + (person as any).age = 29; + + expect(person.age).toBe(29); + }); + it('should allow setting properties', () => { const person = createSpyObject(Person);