javascript - 如何测试/模拟 react 钩子(Hook)?

标签 javascript reactjs jestjs react-hooks okta

最近我升级了 okta-react 库,并已将应用程序转换为使用新的钩子(Hook)。我现在正在更新我的测试。 useOktaAuth()undefined .我希望能够模拟它,以便我可以测试用户何时登录。

const { authState, authService } = useOktaAuth();

// TypeError: Cannot destructure property `authState` of 'undefined' or 'null'

为了解决这个问题,我尝试通过以下方式模拟钩子(Hook):
    jest.mock('@okta/okta-react', () => ({
      useOktaAuth: () => {
        return {
          authState: {},
          authService: {}
        };
      }
    }));

那是行不通的。我仍然对如何测试这些组件有任何想法?

谢谢

最佳答案

经过不断的研究和工作,这对我有用。

jest.mock("@okta/okta-react/dist/OktaContext", () => ({
  useOktaAuth: () => {
    return {
      authState: {},
      authService: {},
    };
  },
}));

describe("Login", () => {
  test("should ", () => {
    const wrapper = shallow(<Login authService={null} />);
    expect(wrapper.length).toBe(1);
  });
});
注意:我将 authService 参数传递给组件。

关于javascript - 如何测试/模拟 react 钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60876624/

相关文章:

reactjs - AWS 放大身份验证 : How to disable AmplifyConfirmSignUp?

javascript - 对状态中的数组值进行计数时超出最大更新深度

javascript - AngularJS 单元测试时无法加载模块

javascript - 开 Jest ;如何在字符串上测试 JSON.parse 会成功

javascript - 在排除一个子 div 及其后代的 div 上触发单击事件

javascript - 通过包含 AngularJS 中的子字符串的属性过滤对象数组

javascript - puppeteer 如何从窗口范围获取变量

javascript - 当子 Accordion 边框与父边框重叠时,如何展开父 CSS Accordion

regex - 为什么我在 React 组件中传递属性时不需要输入字符串转义字符

reactjs - 在 Jest 中测试 React Component 时,我如何才能等到再次收到 Prop ?