Prevendo o início do curso de Automação de Teste de JavaScript, continuamos a publicar a tradução de uma série de artigos úteis.
Esta é a terceira parte de uma série sobre testes com React. Na última parte, cobrimos o formato básico para simulação de componentes React .
Outra coisa que você pode fazer com os mocks é verificar se os filhos corretos foram passados. Na verdade, é isso que veremos agora.
Todos os exemplos de código para este artigo estão disponíveis neste repositório.
Imagine que queremos inserir um formulário de assinatura de boletim informativo dentro PostContent. Podemos fazer isso passando filhos para ele.
Este é o componente atualizado BlogPage:
export const BlogPage = ({ url }) => {
const id = getPostIdFromUrl(url)
const handleSignUp = () => {
// …
}
return (
<PostContent id={id}>
<input type="email" placeholder="Sign up to my mailing list!" />
<button onClick={handleSignUp}>Sign up</button>
</PostContent>
)
}O importante é que nossos testes BlogPagenão se importem com o que PostContent fazem às crianças. Eles só precisam ter certeza de que serão entregues a ele.
, children .mock.calls render. , .
- children:
jest.mock("../src/PostContent", () => ({
PostContent: jest.fn(({ children }) => (
<div data-testid="PostContent">{children}</div>
))
})) , , button PostContent:
it("renders the mailing list sign up button as a child of PostContent", () => {
render(<BlogPage url="http://example.com/blog/my-web-page" />)
const postContentElement = screen.getByTestId("PostContent")
const button = screen.queryByRole(
"button", { name: "Sign up" })
expect(postContentElement).toContainElement(button)
}) input.
, . , , . :
expect(PostContent).toHaveBeenCalledWith(
{ id: postId },
expect.anything()) , children, .
expect.objectContain.
expect.objectContain
! . .
children- : , , ID, -, .
content, expect.objectContain :
expect(PostContent).toHaveBeenCalledWith(
expect.objectContaining({ id: postId }),
expect.anything()), ?
, , `jest.fn (({children}) = {children})
toContainElementjest-dom, , .
expect.objectContain, .
Jest
clearMocks, , .
: