You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If the component had unmounted by the time the request completed, the 'infamous' "Can't perform a React state update on an unmounted component" warning would have been printed to console. However, when I try to write a failing test for this case, enzyme doesn't issue a warning and considers the test to have passed.
This is my test's code:
importReactfrom'react';import{mount}from'enzyme';import{act}from'react-dom/test-utils';// auxiliary classclassMockPromise{constthenCallbacks=[];then(callback){this.thenCallbacks.push(callback);returnthis;}resolve(val){this.thenCallbacks.forEach((callback)=>callback(val));}}describe('TestComponent',()=>{test('should not set state on unmounted component',()=>{constpromise=newMockPromise();constfetchSomethingFromAPI=()=>promise;constwrapper=mount(<TestComponentfetchSomethingFromAPI={fetchSomethingFromAPI}/>);wrapper.unmount();act(()=>{promise.resolve(null);});wrapper.update();});});
This problem seems to only be affecting functional components, for class components the test would fail with the "setState() can only be called on class components" error message; while the message is not the same as it would be in dev environment, at least it allows me to test my class components for this particular case.
Current behavior
Setting state on an unmounted functional component doesn't issue a warning and allows the test to pass
Expected behavior
Setting state on an unmounted functional component should issue a warning and fail the test
Your environment
API
shallow
mount
render
Version
library
version
enzyme
3.11.0
react
16.8.3
react-dom
16.8.3
react-test-renderer
adapter (below)
1.15.5
Adapter
enzyme-adapter-react-16
enzyme-adapter-react-16.3
enzyme-adapter-react-16.2
enzyme-adapter-react-16.1
enzyme-adapter-react-15
enzyme-adapter-react-15.4
enzyme-adapter-react-14
enzyme-adapter-react-13
enzyme-adapter-react-helper
others ( )
The text was updated successfully, but these errors were encountered:
Consider this simple component, which sends an API request on mount and sets component's state to the response:
If the component had unmounted by the time the request completed, the 'infamous' "Can't perform a React state update on an unmounted component" warning would have been printed to console. However, when I try to write a failing test for this case, enzyme doesn't issue a warning and considers the test to have passed.
This is my test's code:
This problem seems to only be affecting functional components, for class components the test would fail with the "setState() can only be called on class components" error message; while the message is not the same as it would be in dev environment, at least it allows me to test my class components for this particular case.
Current behavior
Setting state on an unmounted functional component doesn't issue a warning and allows the test to pass
Expected behavior
Setting state on an unmounted functional component should issue a warning and fail the test
Your environment
API
Version
Adapter
The text was updated successfully, but these errors were encountered: