Я написал здесь тест для поповера https://codesandbox.io/s/popover-opens-on-click-wct7s, который ведет себя так, как и ожидалось в браузере, но не в ферменте. Тест, который я написал, выглядит следующим образом:
import Enzyme, { mount } from "enzyme";
import Adapter from "enzyme-adapter-react-16";
import React from "react";
import { Provider } from "styletron-react";
import { Client as Styletron } from "styletron-engine-atomic";
import Example from "../example";
const engine = new Styletron();
Enzyme.configure({ adapter: new Adapter() });
test("Clicking outside of popover should close popover and make popover contents unmount", async () => {
const wrapper = mount(
<Provider value={engine}>
<div data-test-id="app">
<Example />
</div>
</Provider>
);
let p;
const container = wrapper.find("div");
p = wrapper.find("Paragraph1");
const btn = wrapper.find("button");
expect(p).toHaveLength(0);
btn.simulate("click");
p = wrapper.find("Paragraph1");
expect(p).toHaveLength(1);
container.simulate("click");
p = wrapper.find("Paragraph1");
expect(p).toHaveLength(0); // this test fails and text content lingers after clicking outside
});
Мне было интересно, как исправить этот тест таким образом, чтобы у меня был провальный тест, следуя фактическому поведению, обнаруженному в браузере, когда всплывающее содержимое исчезает после нажатия кнопки снаружи.