首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Vue单元测试中模拟webpack“外部变量”(即jquery)的正确方法(使用mocha)

在Vue单元测试中模拟webpack“外部变量”(即jquery)的正确方法(使用mocha)
EN

Stack Overflow用户
提问于 2019-04-13 00:44:34
回答 1查看 223关注 0票数 0

我有一个Vue项目,它是使用Vue CLI v3.5创建的,正在尝试编写一些组件单元测试。我在vue.config.js中使用jquery作为一个外部的webpack,如下所示:

代码语言:javascript
复制
...
configureWebpack: {
    externals: {
      jquery: 'jQuery'
    }
  }
...

我从index.html中的脚本标记中的CDN加载jquery。显然,每当我运行vue-cli-service test:unit时,我都会得到以下错误,因为jquery不是项目中的依赖项:

代码语言:javascript
复制
 RUNTIME EXCEPTION  Exception occurred while loading your tests

ReferenceError: jQuery is not defined
    at Object.jquery (.../public/webpack:/external "jQuery":1:1)
...

我意识到在我的单元测试中,我可能应该在某个地方模拟jquery,但我不确定正确的方法是什么,所以我只在测试配置中的一个地方做。

EN

回答 1

Stack Overflow用户

发布于 2021-07-29 09:31:56

使用Vue.js (我看到您已经这样标记了问题),我创建了自己的vue.config.js,如下所示。

基本上,它在开发/生产模式下将jquery标记为外部查询,并在测试模式下将其解析为模拟版本。不过,我将把创建jquery的模拟版本留给您。此示例改编自使用不同库的项目。

代码语言:javascript
复制
const path = require('path');

module.exports = {
  configureWebpack() {
    const isTest = process.env.NODE_ENV === 'test';

    let resolve;
    let externals = { jquery: 'jquery ' };

    if (isTest) {
      externals = {};

      resolve = {
        alias: {
          // you may have to fiddle around with this path, from the point of view of where jquery is imported
          jquery: './tests/helpers/fakeJQuery.js',
        }
      };
    }

    return {
      resolve,
      externals,
    };
  },
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55656250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档