我WindowEnv
在尝试模仿的库中有一个ES6类。该类位于@react-force/models
我的React应用程序依赖的名为package中。这是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'),
});
我试图WindowEnv
通过在中添加以下代码来模拟该类/__mocks__/@react-force/models.ts
:
// /__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 '';
}
}
},
};
});
不幸的是,这没有什么区别。该测试无法看到模拟并引发错误。我究竟做错了什么?
模拟类与整个项目一起在此处可用。
如Jest文档所述:
如果您要模拟的模块是Node模块(例如:lodash),则模拟应放置在
__mocks__
与node_modules相邻的目录中(除非您将根配置为指向项目根目录以外的文件夹),并且将被自动模拟。
这样,全局模块模拟不会干扰驻留在中的本地模拟src
。
这是一个已知的问题对于node_modules
在创建应用程序做出反应嘲笑项目。__mocks__
需要移动到里面src
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句