vue+vuex+leaflet Jest单测踩坑指南
环境
- 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单测踩坑指南相关推荐
- Vant-UI 表单组件(Field组件):验证表单元素表单提交 - 踩坑篇
Vant-UI 表单组件(Field组件):验证表单元素&&表单提交: 示例截图 · 如下: 示例 · 详细代码 · 如下: <template><div class ...
- tabbar角标 小程序_【沃行课堂】恭喜你遇到“坑”,小程序踩坑指南
上周我们的开发小哥哥带领我们一起领略了开发中遇到的各种问题,以及基于SaaS模式的平台技术架构及实现.本周我们换个方向,由高级开发工程师秋哥带领大家共同探讨下小程序开发中踩过的坑.秋哥会从公司的几个小 ...
- weex 一个传说级巨坑-- 2018最新版weex踩坑指南(weex navigator 多界面跳转)
先说结论,本人极度非常 不推荐weex作为任何商用开发 有很多人会说了... 你瞎扯.. 你看别人阿里.. 啊飞猪... 啊那个支付宝... 人家不是用得好好的么... 当然这也是我们公司作为技术选型 ...
- 内网穿透,使用 IPv6 公网访问内网设备踩坑指南
本文是开启宽带 IPv6 功能并使用公网 IPv6 地址访问内网设备的踩坑指南.IPv6 是目前个人体验最优的内网访问方案,个人体验远胜过 ZeroTier,frp 等方案. 场景 将个人设备暴露于公 ...
- pytorch .item_从数据到模型,你可能需要1篇详实的pytorch踩坑指南
原创 · 作者 | Giant 学校 | 浙江大学 研究方向 | 对话系统.text2sql 熟悉DL的朋友应该知道Tensorflow.Pytorch.Caffe这些成熟的框架,它们让广大AI爱好者 ...
- vue1升级vue2踩坑指南
vue1升级vue2踩坑指南 升级原因 版本选择 老的package.json: 新的package.json: vue官方说明 语法/组件使用变化 ready钩子 $index & $key ...
- Egg整合antd文件上传以及防踩坑指南
Egg整合antd文件上传以及防踩坑指南 前言 一. 项目编写 二. 注意事项 2.1 清理缓存 2.2 antd的Upload组件得到的事件对象问题 2.3 关于onChange事件的注意 前言 最 ...
- 安装 JupyterHub 踩坑指南 —— 如何通过 JupyterHub 实现多用户管理
安装 JupyterHub 踩坑指南 JupyterHub 简介 Jupyter Notebook and JupyterLab Jupyter Notebook 简介 JupyterLab 简介 安 ...
- Git Commit Message校验踩坑指南
背景 在团队多人开发中,规范的commit message可以快速定位代码提交历史,回溯问题根源,方便组内多人协作,提高团队效率. 本篇文章主要包含以下两方面内容: commitizen/cz-cli ...
最新文章
- 简化 MongoDB 关联运算
- 自旋锁spinlock解析
- Spring-国际化信息01-基础知识
- Jenkins Pipeline 构建复杂的Electron程序
- python提供的三种基本数据类型是()_python基础之基本数据类型
- MVVM是什么?谈谈你对MVVM的理解?
- 阿里登顶毕马威全球企业创新榜 AliOS引领智能网联汽车产业发展
- TCP粘包和拆包的定义,产生的原因以及解决方案
- const限定符用法汇总
- html只能输入两位小数,JQuery控制input只能输入数字和两位小数(有关金额)代码...
- 【渝粤教育】国家开放大学2018年春季 0390-22T古代诗歌散文专题 参考试题
- 《HBase权威指南》一3.4 行锁
- PID控制的现象与本质
- 省市名_code_拼音
- C语言学习笔记(3)函数
- 优锘:ThingJS-X济南广州线下研讨会教你做数字孪生
- c strtok函数用法
- 移动硬盘怎么连接服务器,无线路由器加USB硬盘组建属于自己的FTP服务器的方法 隐者黑鹰...
- python load 和loads 区别
- 微信小程序 - text 标签头部有空白间距
热门文章
- Fuel4d 2.3 公布
- 自定义 Layer 属性的动画
- 造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
- 数据企业IBM段仰圣:大数据关键是“分析”
- Web版的Tabcontrol控件的制作过程
- 从一个男人身上看出他的修养和抱负
- 华为AR28-31配置光纤接入
- sqlserver获取当月、年的第一天和最后一天
- shell脚本批量追踪ip路由走向
- 《中国人工智能学会通讯》——3.15 社交媒体中的谣言识别研究及其发展趋势...