react-testing-library icon indicating copy to clipboard operation
react-testing-library copied to clipboard

renderHook support for multiple parameters

Open danielrentz opened this issue 1 year ago • 8 comments

Describe the feature you'd like:

Testing hooks should support hooks with multiple parameters. Currently, the option "initialProps" of renderHook, and the "rerender" function it returns are supporting only a single parameter.

Suggested implementation:

Obviously, for backwards compatibility, the option "initialProps" cannot be changed. Therefore, I suggest to add a new option "initialArgs" that is an array and renders the hook to be tested by spreading that array.

The function "rerender" returned from "renderHook" will take multiple parameters and forward them to the hook as well.

import useHook from "..."

const { result, rerender } = renderHook(useHook, { initialArgs: [1, 2, 3] })
rerender(3, 4, 5)

It should be an error (exception) to pass both options "initialProps" and "initialArgs" at the same time.

Describe alternatives you've considered:

As a workaround, I currently wrap my multi-arg hooks in a wrapper hook taking an array as "props", but that is cumbersome:

import useHook from "..."

function useTestHook(args) {
    return useHook(...args)
}

const { result, rerender } = renderHook(useTestHook, { initialProps: [1, 2, 3] })
rerender([3, 4, 5])

Teachability, Documentation, Adoption, Migration Strategy:

danielrentz avatar Aug 22 '24 12:08 danielrentz

hey @danielrentz can I take this up?

amanreddy77 avatar Oct 14 '24 16:10 amanreddy77

@amanreddy77 Sure! I did not start to prepare something by myself yet.

danielrentz avatar Oct 15 '24 04:10 danielrentz

@danielrentz - is anyone working on this?

imevanc avatar Mar 09 '25 13:03 imevanc

I hoped @amanreddy77 was... Otherwise I will try by myself.

danielrentz avatar Mar 10 '25 05:03 danielrentz

@danielrentz - happy with me to give it a go?

imevanc avatar Mar 10 '25 22:03 imevanc

@imevanc Sorry what do you mean exactly, do you want to start working on this, or do you want me to start? :)

danielrentz avatar Mar 11 '25 13:03 danielrentz

I'd like to start working on this, @danielrentz

imevanc avatar Mar 11 '25 13:03 imevanc

Nice, thanks!

danielrentz avatar Mar 11 '25 13:03 danielrentz