-
-
Couldn't load subscription status.
- Fork 2k
Open
Description
Current behavior
I have 2 files below
index.js:
import React, { useEffect, useState } from "react";
export const MyComponent = (props) => {
const [val, setVal] = useState(0);
useEffect(() => {
setVal(props.value);
}, [props.value]);
return <div value={val} />;
};index.test.js:
import React from "react";
import { MyComponent } from ".";
import { mount, configure } from "enzyme";
import Adapter from "enzyme-adapter-react-16";
configure({ adapter: new Adapter() });
it("should work", () => {
const component = mount(<MyComponent value={10} />);
component.setProps({ value: 4 });
expect(component.find("div").prop("value")).toEqual(4);
});See more here: https://codesandbox.io/s/7zjfo?file=/index.test.js
Expected behavior
The test goes success, the prop value that child div should received should be updated to 4 instead of remaining 10.
Current behavior
It remains 10.
As my exploiting, the useEffect is working and the val state is updated to 4. So the div should be received 4. But when getting value from the .find().prop() it does not updated but remains old value 10. So I think this could be bug from enzyme adapter as it revert any changes from useState (?, I'm not sure).
Your environment
API
- shallow
- mount
- render
Version
| library | version |
|---|---|
| enzyme | ^3.11.0 |
| react | 16.13.1 |
| react-dom | ^16.0.0 |
| react-test-renderer | |
| adapter (below) | ^1.15.6 |
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 ( )
Metadata
Metadata
Assignees
Labels
No labels