【发布时间】:2020-10-17 17:13:23
【问题描述】:
我在一个库中有一个 WindowEnv ES6 类,我试图模拟它。该类位于我的 React 应用程序所依赖的名为 @react-force/models 的包中。这是WindowEnv 类的代码:
// Env.ts in @react-force/models
export interface Env {
get: (varName: string) => string;
}
export class WindowEnv implements Env {
get(varName: string): string {
return (window as any)._env_[varName];
}
}
这是在我的应用程序中使用此类的代码:
const env = new WindowEnv();
export const api = axios.create({
baseURL: env.get('API_URL'),
});
我试图通过在/__mocks__/@react-force/models.ts 中添加以下代码来模拟WindowEnv 类:
// /__mocks__/@react-force/models.ts
export const WindowEnv = jest.fn(() => {
return {
get: (varName: string): string => {
switch (varName) {
case 'API_URL': {
return 'http://localhost:8080';
}
default: {
return '';
}
}
},
};
});
不幸的是,这没有任何区别。测试无法看到模拟并引发错误。我做错了什么?
模拟类与整个项目一起提供here。
【问题讨论】:
-
问题没有提到
__mocks__的位置,但它似乎在项目根目录中,并且项目是CRA。应该在 src 中,见github.com/facebook/create-react-app/issues/7539 -
你击中了它的头部,埃斯图斯。我一移动 /src 下的 mocks 文件夹,一切就开始工作了!请添加您的评论作为答案,我会将其标记为正确答案。
标签: reactjs jestjs create-react-app