最近写单元测试的时候遇到一个问题,连续写几个 test
时会报以下错误,单独一个没事,按说afterEach
中有cleanup()
不会这样吧,我不理解
既然去不掉就加一个IntersectionObserver
,方法如下
window.IntersectionObserver = vi.fn(() => ({
observe: vi.fn(),
unobserve: vi.fn(),
disconnect: vi.fn(),
}));
这时候 npm run test
就不会报错了
最后希望能有人解答我的疑惑,为什么会出现这种情况,是测试用headlessui
写的modal
的时候出现的这个问题
单独写一个没事:
it("test1", () => {
render(<Modal>modal</Modal>);
});
render
两次就报错
it("test1", () => {
render(<Modal>modal</Modal>);
});
it("test2", () => {
render(<Modal>modal</Modal>);
});
怎么能避免render
两次的时候触发IntersectionObserver
呢?