Я тестирую разные вещи в одном компоненте в отдельных тестах. Я не хочу писать рендер внутри каждого test
, но приведенный ниже код не работает.
Я понял, что функция очистки очищает визуализированный компонент после каждого теста, так что это хорошо.
import React from "react";
import { Router } from "react-router-dom";
import { render } from "@testing-library/react";
import "@testing-library/jest-dom";
import myComp from './myComp'
const renderComponent = () => {
return render(<myComp />);
};
describe("desc", () => {
beforeEach(() => {
const {getAllByText, getByText, getByRole} = renderComponent()
});
test("1", () => {
console.log(getAllByText) // not defined
});
test("2", () => {
console.log(getAllByText) // not defined
});
})
Приведенная выше настройка приводит к ошибке:
ReferenceError: getAllByText is not defined
Мой текущий обходной путь - включать renderComponent()
вызов функции в каждый test
, но это выглядит не так чисто.
test("1", () => {
const {getAllByText, getByText, getByRole} = renderComponent()
});
Пытаться:
let result;
beforeEach(() => {
result = renderComponent();
}
test("renders success state", () => {
const { getByText } = result;
expect(getByText(noAccess)).toBeInTheDocument();
expect(getByText(applyForAccessButton)).toBeInTheDocument();});
Я получаю ошибку:
TypeError: Cannot read property 'getByText' of undefined