【发布时间】:2020-04-25 03:05:13
【问题描述】:
我正在尝试编写一个搜索渲染的 Dom 元素的测试,但它是使用 useEffect 渲染的,所以测试失败了,因为它渲染得晚了一点。 例如:
const [isTrue, setIsTrue] = useState(false);
useEffect(() => {
setIsTrue(!isTrue);
}, []);
<div>
{isTrue && <div className="test">test</div>}
</div>
当 dom 渲染带有 className="test" 的 div 时,仅在 useEffect 之后才渲染,但我有一个名为的测试:
test("test", () => {
expect(wrapper.find(".test").first().text()).toEqual("test");
});
它失败了,因为它只看到第一个渲染,我该如何更改测试,以便它可以看到渲染后的 div 后 useEffect?
编辑: 我尝试使用act,但它仍然不起作用
import { act } from "react-dom/test-utils";
import { mount } from "enzyme";
act(() => {
component = mount(<App />);
});
【问题讨论】:
-
你试过
wrapper.render().find(".test")第二次渲染吗?
标签: javascript reactjs jestjs enzyme use-effect