Я думаю, что ваш тест не имеет смысла начинать с.
Вы проверяете, изменилось ли значение после щелчка, но как могло измениться значение, если значение closed
не изменилось.
В контексте модульного тестирования и для вашего компонента я бы разделил ваш тест на две части:
- Проверка того, что функция
toggleClosed
вызывается при нажатии кнопки. - Проверьте, отображается ли правильный текст на основе значения
closed
Так что это даст вам что-то вроде
Чтобы проверить, была ли вызвана функция при нажатии
it("Testcase: button 'Close Gate' calls the toggleClosed function upon event click", () => {
const mockFn = jest.fn();
const { getByTestId } = render(<Controls toggleClosed={mockFn} />);
const button = getByTestId("closed");
fireEvent.click(button);
expect(mockFn).toHaveBeenCalled();
});
, чтобы проверить правильность текстового значения, следующие 2 теста:
it("Testcase: should display 'Open Gate' when closed is true", () => {
const { getByTestId } = render(<Controls closed={true} />);
const button = getByTestId("closed");
expect(button).toHaveTextContent(/Open Gate/i);
});
it("Testcase: should display 'Close Gate' when closed is false", () => {
const { getByTestId } = render(<Controls closed={false} />);
const button = getByTestId("closed");
expect(button).toHaveTextContent(/Close Gate/i);
});
Тогда, на мой взгляд, вторая кнопка в вашем компоненте полностью протестирована