javascript - Jest.spyOn 非法调用
问题描述
目前,我有以下代码的简单创建反应应用程序
import React from "react";
export const readFilePromise = (file) => {
return new Promise((resolve, reject) => {
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
resolve(reader.result);
};
reader.onerror = (error) => {
reject(error);
};
});
};
test("test", async () => {
let spy = jest
.spyOn(FileReader.prototype, "onload")
.mockImplementation(() => {
console.log("+++ onload");
});
const result = await readFilePromise();
spy.mockRestore();
});
跑步时npm test
,我得到了这个Illegal invocation
TypeError: Illegal invocation
16 | test("test", async () => {
17 | let spy = jest
> 18 | .spyOn(FileReader.prototype, "onload")
知道如何解决吗?
更新 1
我稍微更改了代码。基本上,我想对覆盖率onload
和onerror
. 我具体需要做什么?
test("test", async () => {
let spy = jest.spyOn(global, "FileReader").mockImplementation(function () {
this.readAsDataURL = jest.fn();
this.onload = jest.fn();
this.onerror = jest.fn();
});
let result = await readFilePromise();
spy.mockRestore();
});
解决方案
推荐阅读
- ios - 如何处理 UITableView Cell 中的计时器时间和功能
- python-3.x - 如何使用openCV从图像中清除数字?
- javascript - 如何在 sharepoint 现代 UI 中的特定文档集中显示自定义命令集?
- powershell - 使用 Find-Item 命令时如何获取演示详细信息/渲染属性?
- python - python没有读取整个文件
- kubernetes - 为什么 kubectl describe secret 不起作用?
- laravel - 如何使用 Laravel 框架从公共文件夹访问样式表和 js 文件
- git - 如何克隆特定分支并仅在 GIT 中将更改推送到该分支
- python - 在 Python 中,我如何读取值以某个字符串开头的所有列?
- reactjs - 如何使用 React 组件显示 Google Maps InfoWindow