Closed
Description
react-hooks-testing-library
version: 0.3.7react-testing-library
version: N/A (I haven't installed this package in my repo for testing)react
version: 16.8node
version: 8.11.2npm
(oryarn
) version: 5.6.0
Relevant code or config:
const usCustomHook = (argA, argB) => {
if (!argA || typeof argA !== 'function') {
throw new Error('argA must be a function');
}
if (!argB || typeof argB !== 'string' || !argB.length) {
throw new Error('argB must be a string');
}
..... // code for the custom hook
}
What you did:
I am trying to implement a custom hook adding validation for the arguments to match the expectations. undefined arguments should result in throwing error.
What happened:
The custom hook itself works as expected, however when testing above using jest passes tests but prints errors in console:
Tests:
test('Not providing valid argA should fail', () => {
try {
renderHook(() => useCustomHook(undefined, 'invalid data'));
} catch (e) {
expect(e.message).toBe('argA must be a function');
}
try {
renderHook(() => useCustomHook('foo', 'invalid data'));
} catch (e) {
expect(e.message).toBe('argA must be a function');
}
});
test('Not providing valid argB should fail', () => {
try {
renderHook(() => useCustomHook(() => {}, undefined));
} catch (e) {
expect(e.message).toBe('argB must be a string');
}
try {
renderHook(() => useCustomHook(() => {}, 12345));
} catch (e) {
expect(e.message).toBe('argB must be a string');
}
});
Error it prints in console with tests passing:
console.error node_modules/jsdom/lib/jsdom/virtual-console.js:29
Error: Uncaught [Error: argA must be a function]
console.error node_modules/react-dom/cjs/react-dom.development.js:17071
The above error occurred in the <TestHook> component:
in TestHook
Consider adding an error boundary to your tree to customize error handling behavior.
Visit https://fb.me/react-error-boundaries to learn more about error boundaries.
console.error node_modules/jsdom/lib/jsdom/virtual-console.js:29
Error: Uncaught [Error: argA must be a function]
console.error node_modules/react-dom/cjs/react-dom.development.js:17071
The above error occurred in the <TestHook> component:
in TestHook
Consider adding an error boundary to your tree to customize error handling behavior.
Visit https://fb.me/react-error-boundaries to learn more about error boundaries.
console.error node_modules/jsdom/lib/jsdom/virtual-console.js:29
Error: Uncaught [Error: argB must be a string]
console.error node_modules/react-dom/cjs/react-dom.development.js:17071
The above error occurred in the <TestHook> component:
in TestHook
Consider adding an error boundary to your tree to customize error handling behavior.
Visit https://fb.me/react-error-boundaries to learn more about error boundaries.
console.error node_modules/jsdom/lib/jsdom/virtual-console.js:29
Error: Uncaught [Error: argB must be a string]
console.error node_modules/react-dom/cjs/react-dom.development.js:17071
The above error occurred in the <TestHook> component:
in TestHook
Consider adding an error boundary to your tree to customize error handling behavior.
Visit https://fb.me/react-error-boundaries to learn more about error boundaries.
Reproduction:
CodeSandBox link: https://codesandbox.io/s/183om7054
Problem description:
I believe it would be ideal not to print the jsdom errors since the errors are catched and error message is verified using jest.