环境

  • Vue CLI 3
  • TypeScript 3.1.4
  • Leaflet 1.3.4

相关文档

vue-test-utils.vuejs.org/zh/guides/#…

踩坑

1、iview按需引入报错:Typescript Error : 'XXX' only refers to a type, but is being used as a value here

原因:iview默认的声明文件只声明了类型,不能当变量用于Vue全局组件注册语句中

Vue.component('Tabs', Tabs);
复制代码

解决:定义自己的ts声明文件:github.com/iview/iview…

import { Tabs, TabPane } from 'iview';declare module 'iview/dist/types/tabs' {export const Tabs: Tabs;export const TabPane: TabPane;
}
复制代码

2.leaflet报错:"TypeError: Cannot read property '_layerAdd' of null"

原因:leaflet在map上添加图层时会将图层绘制在对应的renderer上,默认是svg;但jest默认在jsdom中执行测试,leaflet创建svg renderer时会判断当前环境是否支持svg:

function svgCreate(name) {return document.createElementNS('http://www.w3.org/2000/svg', name);
}
var svg = !!(document.createElementNS && svgCreate('svg').createSVGRect);
var vml = !svg && (function () {try {var div = document.createElement('div');div.innerHTML = '<v:shape adj="1"/>';var shape = div.firstChild;shape.style.behavior = 'url(#default#VML)';return shape && (typeof shape.adj === 'object');} catch (e) {return false;}
}());
function svg$1(options) {return svg || vml ? new SVG(options) : null;
}
Map.include({_createRenderer: function (options) {return (this.options.preferCanvas && canvas$1(options)) || svg$1(options);}
}
复制代码

在jsdom环境下svg为false,vml为false;且this.options.preferCanvas默认为false,所以_createRenderer返回null了
解决:设置this.options.preferCanvas为true,使用canvas来作为renderer

3.设置canvas作为renderer报错:Not implemented: HTMLCanvasElement.prototype.getContext (without installing the canvas npm package)

原因:jsdom不支持canvas,需要额外引入包
解决:安装jest-canvas-mock包,在jest的配置文件中添加 setupFiles: ['jest-canvas-mock']

未完待续...

转载于:https://juejin.im/post/5bfab3c651882521c81146c0

vue+vuex+leaflet Jest单测踩坑指南相关推荐

  1. Vant-UI 表单组件(Field组件):验证表单元素表单提交 - 踩坑篇

    Vant-UI 表单组件(Field组件):验证表单元素&&表单提交: 示例截图 · 如下: 示例 · 详细代码 · 如下: <template><div class ...

  2. tabbar角标 小程序_【沃行课堂】恭喜你遇到“坑”,小程序踩坑指南

    上周我们的开发小哥哥带领我们一起领略了开发中遇到的各种问题,以及基于SaaS模式的平台技术架构及实现.本周我们换个方向,由高级开发工程师秋哥带领大家共同探讨下小程序开发中踩过的坑.秋哥会从公司的几个小 ...

  3. weex 一个传说级巨坑-- 2018最新版weex踩坑指南(weex navigator 多界面跳转)

    先说结论,本人极度非常 不推荐weex作为任何商用开发 有很多人会说了... 你瞎扯.. 你看别人阿里.. 啊飞猪... 啊那个支付宝... 人家不是用得好好的么... 当然这也是我们公司作为技术选型 ...

  4. 内网穿透,使用 IPv6 公网访问内网设备踩坑指南

    本文是开启宽带 IPv6 功能并使用公网 IPv6 地址访问内网设备的踩坑指南.IPv6 是目前个人体验最优的内网访问方案,个人体验远胜过 ZeroTier,frp 等方案. 场景 将个人设备暴露于公 ...

  5. pytorch .item_从数据到模型,你可能需要1篇详实的pytorch踩坑指南

    原创 · 作者 | Giant 学校 | 浙江大学 研究方向 | 对话系统.text2sql 熟悉DL的朋友应该知道Tensorflow.Pytorch.Caffe这些成熟的框架,它们让广大AI爱好者 ...

  6. vue1升级vue2踩坑指南

    vue1升级vue2踩坑指南 升级原因 版本选择 老的package.json: 新的package.json: vue官方说明 语法/组件使用变化 ready钩子 $index & $key ...

  7. Egg整合antd文件上传以及防踩坑指南

    Egg整合antd文件上传以及防踩坑指南 前言 一. 项目编写 二. 注意事项 2.1 清理缓存 2.2 antd的Upload组件得到的事件对象问题 2.3 关于onChange事件的注意 前言 最 ...

  8. 安装 JupyterHub 踩坑指南 —— 如何通过 JupyterHub 实现多用户管理

    安装 JupyterHub 踩坑指南 JupyterHub 简介 Jupyter Notebook and JupyterLab Jupyter Notebook 简介 JupyterLab 简介 安 ...

  9. Git Commit Message校验踩坑指南

    背景 在团队多人开发中,规范的commit message可以快速定位代码提交历史,回溯问题根源,方便组内多人协作,提高团队效率. 本篇文章主要包含以下两方面内容: commitizen/cz-cli ...

最新文章

  1. 简化 MongoDB 关联运算
  2. 自旋锁spinlock解析
  3. Spring-国际化信息01-基础知识
  4. Jenkins Pipeline 构建复杂的Electron程序
  5. python提供的三种基本数据类型是()_python基础之基本数据类型
  6. MVVM是什么?谈谈你对MVVM的理解?
  7. 阿里登顶毕马威全球企业创新榜 AliOS引领智能网联汽车产业发展
  8. TCP粘包和拆包的定义,产生的原因以及解决方案
  9. const限定符用法汇总
  10. html只能输入两位小数,JQuery控制input只能输入数字和两位小数(有关金额)代码...
  11. 【渝粤教育】国家开放大学2018年春季 0390-22T古代诗歌散文专题 参考试题
  12. 《HBase权威指南》一3.4 行锁
  13. PID控制的现象与本质
  14. 省市名_code_拼音
  15. C语言学习笔记(3)函数
  16. 优锘:ThingJS-X济南广州线下研讨会教你做数字孪生
  17. c strtok函数用法
  18. 移动硬盘怎么连接服务器,无线路由器加USB硬盘组建属于自己的FTP服务器的方法 隐者黑鹰...
  19. python load 和loads 区别
  20. 微信小程序 - text 标签头部有空白间距

热门文章

  1. Fuel4d 2.3 公布
  2. 自定义 Layer 属性的动画
  3. 造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
  4. 数据企业IBM段仰圣:大数据关键是“分析”
  5. Web版的Tabcontrol控件的制作过程
  6. 从一个男人身上看出他的修养和抱负
  7. 华为AR28-31配置光纤接入
  8. sqlserver获取当月、年的第一天和最后一天
  9. shell脚本批量追踪ip路由走向
  10. 《中国人工智能学会通讯》——3.15 社交媒体中的谣言识别研究及其发展趋势...