Teste a renderização condicional de componentes com base em dados ContextAPI usando Jest e Enzyme
Oct 22 2020
Quero fazer testes de unidade no componente Form. usersão dados de contexto que são compartilhados com todos os componentes filhos.
const { user } = useContext(UserContextAPI);
return (
<> {!user ? (
<>
{navigation.push({
pathname: "./Login",
state: { editProduct: "edit" },
})}
</>
) : (
<Form>.....</From>
)
}
</>
);
Eu escrevi um caso de teste simples para testar o componente do formulário
it("should contain From component", () => {
let wrapper = mount(
<BrowserRouter>
<EditProduct.WrappedComponent />
</BrowserRouter>
);
expect(wrapper.find("Form").exist()).toEqual(true);
});
Mas o caso de teste falhou, eu acho que com base na renderização condicional, ele não vai testar o componente Form. Como poderíamos fazer a renderização condicional com base nos dados de contexto?
Respostas
2 KenBekov Oct 22 2020 at 10:08
Tente adicionar o provedor de contexto no nível superior:
it("should contain From component", () => {
const UserContextAPI = React.createContext({});
let wrapper = mount(
<UserContextAPI.Provider value="{}">
<BrowserRouter>
<EditProduct.WrappedComponent />
</BrowserRouter>
</UserContextAPI.Provider>
);
expect(wrapper.find("Form").exist()).toEqual(true);
});
1 SubatoPatnaik Oct 22 2020 at 10:46
Eu fiz assim e funcionou. @Ken Bekov Créditos para você
it("should contain From component", () => {
const history = createBrowserHistory();
const state = { pid: 1 };
history.push("/EditProduct", state);
wrapper = mount(
<UserContextAPI.Provider value={{ user: 1 }}>
<Router history={history}>
<EditProduct.WrappedComponent />
</Router>
</UserContextAPI.Provider>
);
expect(wrapper.find("Form").exist()).toEqual(true);
});
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas