【发布时间】:2021-08-24 14:19:40
【问题描述】:
我有UserContext 和一个从src/app/context/user-context.tsx 导出的钩子useUser。
此外,我在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,
});
})
【问题讨论】:
-
你是如何在被测试的代码中导入
UserContext的?如果您从“src/app/context/user-context”导入,那么您需要在规范文件中以相同的方式导入它,否则它不会模拟相同的东西。虽然您的 TypeError 似乎是一个不同的问题......
标签: reactjs typescript jestjs spyon