【发布时间】:2020-09-09 06:06:27
【问题描述】:
我有一些问题要通过一些测试。经过几个小时试图弄清楚发生了什么,我意识到 jest 对Files 有一些问题
我写了一个简单的测试,期望超过一个文件内容:
describe(".file test", () => {
test("jest can work whit files", async () => {
const aContent = "a_content";
const file = new File([aContent], "aFile.txt");
const fileContent = await file.text()
expect(fileContent).toBe(aContent)
})
)
那个简单的代码,在浏览器中的真实应用程序中执行时工作。但是,当我启动测试套件时,我得到一个错误:
TypeError: file.text 不是函数
30 | const aContent = "a_content";
31 | const file = new File([aContent], "aFile.txt");
> 32 | const fileContent = await file.text()
| ^
33 | expect(fileContent).toBe(aContent)
那么,我需要开玩笑的是,可以使用 Files 吗?
【问题讨论】:
-
有办法的。模拟
File。text是最近添加的,不应该存在于 JSDOM 中。 -
我不想模拟
File.text,因为在实际测试中,我需要该函数返回文件的实际内容。如果我使用mockImplementation,它将隐藏应用程序的实际行为,并且在被测主题中读取多个文件,因此每次必须返回不同的内容。 -
我认为多个文件没有问题。每次您需要时,都可以为 Jest spy 提供新的实现。 Jest 的 DOM 不应该也不能表现得像真实的东西。它是带有假 DOM 的 Node.js 环境,而不是浏览器。如果您想测试它的实际工作原理,请使用无头浏览器(Puppeteer)。
-
您在寻找单元测试、集成测试还是 E2E 测试?
-
我正在寻找单元测试。但是,感谢@EstusFlask cmets,我找到了解决方法
标签: reactjs testing jestjs react-testing-library