开玩笑测试不识别 react web 应用程序中的测试 id

Jest test don't identify the test id in react web app

提问人:marcosfandrade 提问时间:11/15/2023 更新时间:11/15/2023 访问量:20

问:

我正在使用 Jest 进行 react Web 测试,但 Jest 没有识别测试 id(我正在使用 vite,我不知道是否有问题)。我尝试通过占位符进行验证,但没有成功(我认为这可能会导致更多问题,因为我使用的是 i18) 错误:Error Unable to find an element by

const mockStore = configureStore([]);
describe("LinkAccountFormDialog", () => {
  it("successfully links an account", async () => {
    const initialState = {
      session: {
        sessionUser: { uid: "testUserId" },
      },
    };
    const store = mockStore(initialState);

    const { getByPlaceholderText, getByTestId } = render(
      <Provider store={store}>
        <I18nextProvider i18n={i18n}>
          <LinkAccountFormDialog onFinished={() => {}} />
        </I18nextProvider>
      </Provider>
    );

    fireEvent.change(getByTestId("username-input"), {
      target: { value: "testUsername" },
    });
    fireEvent.change(getByPlaceholderText("Password"), {
      target: { value: "testPassword" },
    });

    await waitFor(() => {
      expect(screen.getByTestId('username-input').value).toBe('testUsername');
    }, { timeout: 5000 });  // Aumente o timeout conforme necessário.
  });
});

输入阵营:

<Input
          data-testid="username-input"
          placeholder={t("general.username")}
          value={username}
          onChange={(e) => setUsername(e.target.value)}
        />
reactjs testing input jestjs vite

评论

1赞 Tal Rofe 11/15/2023
你说的元素,是在这个复合体里面吗?如果是这样,它是有条件的 rendrered 组件吗?inputLinkAccountFormDialog
0赞 marcosfandrade 11/16/2023
主要组件是一个模态,通量:打开模态 -> 选择一个帐户或单击登录按钮 如果您单击登录按钮,下一个点击是在同一模态中登录 LinkAccountFormDialog
0赞 marcosfandrade 11/17/2023
我认为这是一个条件渲染,对吧?
0赞 Tal Rofe 11/17/2023
如果模态是有条件地渲染的,并且最初没有被渲染,则您尝试捕获的元素尚不存在

答: 暂无答案