FluffySpoon.JavaScript.Testing.Faking
FluffySpoon.JavaScript.Testing.Faking copied to clipboard
Object destructuring + rest doesn't work
Describe the bug I cant use a Substitute mock for code that uses object destructuring + rest
To Reproduce
import Substitute from "@fluffy-spoon/substitute";
type Entity = { id: number; name: string; lastName: string };
const copyEntity = (entity: Entity) => {
const { id, ...params } = entity;
console.log(params);
};
const mockEntity = Substitute.for<Entity>();
mockEntity.id.returns!(1);
mockEntity.name.returns!('test name');
mockEntity.lastName.returns!('test last name');
copyEntity(mockEntity); // empty object
copyEntity({id:1, name: 'test name', lastName: 'test last name'}) // {name: 'test name', lastName: 'test last name'}
Codesandbox: https://codesandbox.io/s/flamboyant-sea-o5zf4?file=/src/index.ts:0-469
Expected behavior I should be able to test functions using destructuring with the rest pattern
Environment
- Typescript version:
3.9.3
- substitute.js version:
1.145.0
- Node version:
12
Thank you for the detailed report! Can confirm the bug ^^
Maybe the proxy object has a method for destructuring that we're missing.
Yes, we need to add a trap to handle the spread assignments!