With a class component I usually create an instance of that component and I can access the function. I'm not sure how to access the function of a functional component.
const errorMessages = {
browse: {
fileLimit: 'File size is too big.',
unsupportedFormat: 'The file you selected is not a supported format. Please upload a file in .csv format.',
noRows: 'No agent IDS could be found.',
maxAgents: 'A max of 25 agents can be uploaded at a time.',
noValidAgents: 'No valid agents could be found.'
},
duplicate: 'The following agents are already existing on the table.'
};
const UploadButton = (props, ref) => {
const mimeTypes = ['text/csv', 'application/vnd.ms-excel'];
let initialValue = false;
const [browseError, setBrowseError] = useState(initialValue);
const [uploadError, setUploadError] = useState(initialValue);
const [duplicateError, setDupplicateError] = useState(initialValue);
const [uploading, setUploading] = useState(false);
const fileInputRefs = useRef(initialValue);
const clearAllErrors = () => {
setBrowseError(initialValue);
setUploadError(initialValue);
setDupplicateError(initialValue);
}
....
}
So accessing clearAllErrors for example or errorMessages which outside of the functional component.
Top comments (2)
Instead of testing the function off of the component, I would recommend asserting against the rendered component. I recommend taking a look at react-testing-library and adopting it's approach to writing unit tests. I've been really happy with it in general.
This^ . Also, if you have a function you reeeeally need to test, you can always extract it into a separate file/module/service/whatever, and you can unit test it separately from the functional component.