Skip to content

Object destructuring + rest doesn't work #129

Open

Description

@0xjocke

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

Activity

  1. notanengineercom commented on Sep 27, 2020

    @notanengineercom
    Collaborator

    Thank you for the detailed report!
    Can confirm the bug ^^

  2. ffMathy commented on Sep 28, 2020

    @ffMathy
    Owner

    Maybe the proxy object has a method for destructuring that we're missing.

  3. notanengineercom commented on Sep 28, 2020

    @notanengineercom
    Collaborator

    Yes, we need to add a trap to handle the spread assignments!

  4. added this to the v2.0 milestone on Mar 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions