Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

renderHook support for multiple parameters #1350

Open
danielrentz opened this issue Aug 22, 2024 · 2 comments
Open

renderHook support for multiple parameters #1350

danielrentz opened this issue Aug 22, 2024 · 2 comments

Comments

@danielrentz
Copy link

danielrentz commented Aug 22, 2024

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 danielrentz changed the title renderHook support for multple parameters renderHook support for multiple parameters Aug 22, 2024
@amanreddy77
Copy link

hey @danielrentz can I take this up?

@danielrentz
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants