运行Jest时替换为`require.context`

raf*_*010 6 javascript reactjs vue.js jestjs

我正在尝试使用来为我的React应用程序运行测试Jest,但是由于错误提示说这require.context不是函数,所以测试一直失败。我正在寻找该功能的替代品,而该功能Jest将不会停止。我试图动态地require修改某些*.vue文件,Vue.js以便以后在我的应用程序中使用。除此之外,我偶尔还会收到无法识别.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 )');
    }
});
Run Code Online (Sandbox Code Playgroud)

Ste*_*ert 1

如果有人仍然遇到这个问题,你需要知道这require.context是一个 webpack 特定的功能,所以它不起作用。

您可以尝试模拟它,就像有人已经在How can I mock Webpack's require.context in Jest?中提供的答案一样。所以问题。但如果没有任何解决方法,您就无法使用它。