DEV Community

Discussion on: Everything you need to know about React Hooks

Collapse
 
chasm profile image
Charles F. Munat

How can everyone write about hooks without a word about testing them? Not just this author -- even the Facebook documentation says nothing about testing them.

Shouldn't every code example START with a test before a line of application code is even written? If tests are an afterthought or left out completely in the tutorials, how do you think the average developer will treat them? Maybe as an afterthought or left out completely?

Maybe you could take the lead on this?

Collapse
 
vcarl profile image
Carl Vitullo

Hooks are an implementation detail, if used within a component. I specifically try to write UI tests that manipulate the DOM and verify that callbacks were called correctly (what I view as the inputs and outputs of a UI--react-testing-library is excellent for this), so whether I use hooks or something else the tests would be the same. Indeed, I'd consider it a faulty test if I had to dramatically change my strategy by adding hooks.

As for writing tests for custom hooks, that is definitely new and valuable, but seems beyond the scope of an API overview. If you'd like to try it out and write up your experience with it, I'm sure it would be valuable.

Collapse
 
chasm profile image
Charles F. Munat

So would you disagree with this example:

medium.com/@MimiLiou77/testing-rea...

(Only one I've found.)

There is actually very little on best practices unless one goes off and takes something like the frontend masters courses. Personally, I think tests should always be discussed, even if to say what you've said above.

So you don't use mocks to mock out the implementation?

Thread Thread
 
vcarl profile image
Carl Vitullo

Mocking modules makes tests more fragile, I try to mock as little as is feasible when testing. Ideally I'd only use mocks for functions that I pass in, and I'd use those more as "spies" to make sure they're called correctly.

That seems like a solid testing example of a custom hook, as a unit test.

Thread Thread
 
chasm profile image
Charles F. Munat

I'm only mocking my own functions. I never mock libraries. I figure they should work fine.

I will give this some thought. Thanks for the responses.