打开和关闭对话框模式并等待通过提供程序的响应

sku*_*ube 3 unit-testing reactjs react-testing-library

使用 React 测试库来测试对话框提供程序。我可以让它打开,并在它出现时断言 - 但由于某种原因我无法在测试中关闭它。我需要重新渲染吗?

test('await the closing or confirming of the modal', async () => {
  const { debug, getByText, queryByText } = render(
    <DialogProvider>
      <Test />
    </DialogProvider>,
  );
  const openDialogButton = getByText(/click me/i);
  fireEvent.click(openDialogButton);
  await wait(() => getByText(/ok/i));
  fireEvent.click(getByText(/ok/i));
  debug();
});


function Test() {
  const confirm = useConfirmation();
  return (
    <button
      onClick={() => {
        confirm({ variant: 'info' });
      }}
    >
      click me
    </button>
  );
}
Run Code Online (Sandbox Code Playgroud)

sku*_*ube 5

显然,以下似乎有效

  await waitForElement(() => getByText(/ok/i));
  fireEvent.click(getByText(/ok/i));
  await waitForElementToBeRemoved(() => queryByText(/ok/i));
  expect(queryByText(/ok/i)).toBeNull();
Run Code Online (Sandbox Code Playgroud)