unit-testing - 如何在 Vue.js 测试中测试 Canvas 元素?
问题描述
我有一些像这样的 vue 组件方法:
showPhotoOnTarget(photoCanvas, targetCanvas) {
let imgData = photoCanvas
.getContext("2d")
.getImageData(0, 0, photoCanvas.width, photoCanvas.height);
targetCanvas.width = photoCanvas.width;
targetCanvas.height = photoCanvas.height;
targetCanvas.getContext("2d").putImageData(imgData, 0, 0);
}
在我的测试设置中,我尝试像这样模拟 Canvas 的东西:
store = new Vuex.Store({
state: {
currentPhotoCanvas: {
getContext: () => ({
getImageData: jest.fn(),
putImageData: jest.fn()
})
}
},
getters: {
"snap/getCurrentPhotoCanvas": state => state.currentPhotoCanvas
}
showPhotoOnTarget
在挂载挂钩上被调用,如下所示:
const photoCanvasRef = this.$refs.photoTargetCanvas;
this.showPhotoOnTarget(this.photoCanvas, photoCanvasRef);
并$refs
在这样的挂载选项中被嘲笑:
const $refs = {
photoTargetCanvas: {}
};
但是,当我运行测试时,我收到此错误: TypeError: Failed to execute 'putImageData' on 'CanvasRenderingContext2D': parameter 1 is not of type 'ImageData'.
是否可以在我的 vue 测试中模拟这样的 Canvas 函数?如果是这样,有人可以告诉我如何设置测试吗?我对 Canvas 不是很熟悉,这可能是问题的一部分。
解决方案
推荐阅读
- android - 尝试在空对象引用上调用虚拟方法“void com.google.android.gms.maps.SupportMapFragment.getMapAsync(..)”
- node.js - Selenium webdriver 打开 firefox 但不通过 Selenium 和 NodeJS 获取页面
- python - 如何在 Pycharm 中显示与在 Jupyter 中相同的详细帮助?
- java - 页脚视图列表 Api26
- java - 有没有办法为组合框数组编写动态动作监听器
- java - Java编译器得出的结论是变量是Double,因为它实际上是Long而崩溃
- asp.net-core - 在 csproj 中定义 AspNetCoreHostingModel 抛出 Failed to start 'npm' 异常
- javascript - 使用其名称作为字符串调用函数并使用数组替换参数
- c# - 从集合持有接口返回类而不是接口
- python - Python3 中的简单网络爬虫不产生输出。这是怎么回事?