运行 Jest 时替换 `require.context`
Posted
技术标签:
【中文标题】运行 Jest 时替换 `require.context`【英文标题】:Replacement for `require.context` when running Jest 【发布时间】:2017-07-07 06:14:21 【问题描述】:我正在尝试使用 Jest
为我的 React 应用程序运行测试,但由于错误提示 require.context
不是函数,我的测试一直失败。我正在寻找Jest
不会阻塞的功能的替代品。我正在尝试动态地require
并从Vue.js
修改一些*.vue
文件,以便稍后在我的应用程序中使用。除此之外,我偶尔会收到无法识别.vue
文件格式的错误,并说无法解析它们。这是有问题的代码:
function inject(comp)
comp.methods = Object.assign(, comp.methods, stub.methods);
return comp;
let req = require.context('./', false, /\.vue$/);
components.forEach(function (component)
try
let filePath = __dirname + "\\" + component + '.vue';
let injected = inject(req(filePath));
Vue.component(getComponentName(component), injected);
let appComponent =
name: injected.name,
props:
autocompletion:
metadata: getComponentName('template'),
score: xTemplatesScore,
attributes: injected.props || []
;
appComponents.push(appComponent);
catch (err)
console.log(err);
console.error('Vue file was not found for component:' + component + '. Please rename your files accordingly ( component-name.vue )');
);
【问题讨论】:
How can I mock Webpack's require.context in Jest?的可能重复 【参考方案1】:如果有人仍然遇到这个问题,你需要知道 require.context
是 webpack 特有的功能,所以它不能开玩笑。
您可以尝试模拟它,就像在这个How can I mock Webpack's require.context in Jest? SO 问题中已经提供的答案一样。但是如果没有任何解决方法,您将无法使用它。
【讨论】:
以上是关于运行 Jest 时替换 `require.context`的主要内容,如果未能解决你的问题,请参考以下文章
运行 Jest 测试时未定义`regeneratorRuntime`
在 react native + typescript 应用程序上运行 jest 时出错(Jest 遇到了意外的令牌)