jest spyOn 不适用于索引文件,无法重新定义属性

问题描述

我有 UserContext一个useUser 导出的钩子 src/app/context/user-context.tsx。 此外,我在 src/app/context 中有一个 index.tsx 文件,用于导出所有子模块。

如果我监视 src/app/context/user-context 它可以工作但将导入更改为 src/app/context 我得到:

TypeError: Cannot redefine property: useUser at Function.defineProperty (<anonymous>)

这是为什么?

代码

// src/app/context/user-context.tsx

export const UserContext = React.createContext({});

export function useUser() {
  return useContext(UserContext);;
}

// src/app/context/index.tsx

export * from "./user-context";
// *.spec.tsx

// This works:
import * as UserContext from "src/app/context/user-context";

// This does not work:
// import * as UserContext from "src/app/context";

it("should render complete navigation when user is logged in",() => {

    jest.spyOn(UserContext,"useUser").mockReturnValue({
        user: mockUser,update: (user) => null,initialized: true,});
})

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)