When using Enzyme and React-Intl you are likely run into the issues when testing components that use some of React-Intl's components or injected formatting functions. These helper functions (mountWithIntl
and shallowWithIntl
) aim to address some of the below errors:
Uncaught Invariant Violation: [React Intl] Could not find required ``intl`` object. <IntlProvider> needs to exist in the component ancestry.
TypeError: Cannot read property 'getInstance' of null
Error: ReactWrapper::state() can only be called on the root
Checkout this question at StackOverflow for a complete overview of the issues I ran into:
Injecting react-intl object into mounted Enzyme components for testing
Ok, i've figured out why, i was testing for redux with a Provider Wrapper , so the nodeWithIntlProp needed to simulate the injectIntl wasn't setting the prop intl to my component, but to the wrapper
The working method is to export the nodeWithIntlProp function and do this instead:
Will try to figure out a better syntax