在尝试运行Mocha测试时,require.context不是函数

时间:2017-01-24 15:45:31

标签: javascript reactjs webpack mocha vue.js

我正在尝试使用Mocha.js + JSDOM框架运行测试,但我无法启动Mocha。这是在使用React库测试Vue.js应用的过程中。我一直收到以下错误:

var req = require.context('./', false, /\.vue$/);
TypeError: require.context is not a function

有问题的代码是:

let req = require.context('./', false, /\.vue$/);
components.forEach(function (component) {
    try {
        let filePath = './' + 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 )');
    }

有没有办法绕过这个并实际让Mocha启动?或者require.context是否有合适的替代品?我试图用简单的字符串连接和一个香草require来重做它,但这一直告诉我没有Vue模块可以找到。

1 个答案:

答案 0 :(得分:4)

require.context是webpack的一种方法。您的测试必须捆绑才能运行。

通常,您需要为测试创建单独的webpack配置文件。然后,您将使用webpack创建测试包,然后在此捆绑包上运行Mocha。或者,您可以在webpack测试配置文件中使用mocha-loader,并让测试作为捆绑过程的一部分运行。

更多信息可在webpack documentation on testing

中找到