首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在react本机测试库中找到带有testID的元素

无法在react本机测试库中找到带有testID的元素
EN

Stack Overflow用户
提问于 2022-07-30 17:25:07
回答 1查看 367关注 0票数 0

我正在尝试findByTestId一个IconButton (来自React本地文件),但我得到了以下错误:

代码语言:javascript
运行
复制
 Unable to find an element with testID: home-settings-button

      84 |   fireEvent.press(loginButton);
      85 |
    > 86 |   const settingsButton = await findByTestId("home-settings-button");
         |                                ^
      87 |
      88 |   fireEvent.press(settingsButton);
      89 |

      at findByTestId (node_modules/@testing-library/react-native/build/helpers/makeQueries.js:95:35)
      at _callee5$ (__tests__/navigator.test.js:86:32)
      at tryCatch (node_modules/regenerator-runtime/runtime.js:63:40)
      at Generator.invoke [as _invoke] (node_modules/regenerator-runtime/runtime.js:294:22)
      at Generator.next (node_modules/regenerator-runtime/runtime.js:119:21)
      at tryCatch (node_modules/regenerator-runtime/runtime.js:63:40)
      at invoke (node_modules/regenerator-runtime/runtime.js:155:20)
      at node_modules/regenerator-runtime/runtime.js:165:13

当我试图呈现视图并以getByTestId表示IconButton时,我没有收到这个错误,但是当我试图呈现AppNavigator并尝试对同一个IconButton进行findByTestId时,它就不起作用了。

例如,这起作用是:

代码语言:javascript
运行
复制
it("renders the home screen", () => {
  const { getByTestId } = render(<HomeScreen />);

  getByTestId("home-settings-button");
});

但这并不是:

代码语言:javascript
运行
复制
it("test settings page's logic", async () => {
  const { findByTestId } = render(<AppNavigator />);

  //Login and go to settings page
  const userInput = await findByTestId("login-username-input");
  const passwordInput = await findByTestId("login-password-input");
  const loginButton = await findByTestId("login-login-button");

  fireEvent.changeText(userInput, "admin");
  fireEvent.changeText(passwordInput, "admin");
  fireEvent.press(loginButton);

  const settingsButton = await findByTestId("home-settings-button");

  fireEvent.press(settingsButton);
});

这里是IconButton:

代码语言:javascript
运行
复制
 <IconButton
        icon="cog"
        size={30}
        style={homeStyle.settings}
        onPress={() => {
          settings();
        }}
        testID={"home-settings-button"}
 />

我不太明白为什么会发生这种情况,为什么我不能findByTestId这个IconButton呢?我只是试着用按钮来测试导航。

EN

回答 1

Stack Overflow用户

发布于 2022-12-03 15:23:22

如果使用NativeBase解决上述问题,只需在测试中将initialWindowMetrics传递给NativeBaseProvider即可。

代码语言:javascript
运行
复制
const inset = {
  frame: { x: 0, y: 0, width: 0, height: 0 },
  insets: { top: 0, left: 0, right: 0, bottom: 0 },
};

<NativeBaseProvider initialWindowMetrics={inset}>
  {children}
</NativeBaseProvider>;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73177741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档