以前我只用Jasmine做测试,现在我尝试Jest,但面临的问题是像FileReader, File and TextDecoder这样的东西在我的测试中没有定义,我如何使用这些类的真实的函数来测试使用它们的类呢?
FileReader, File and TextDecoder
ghhaqwfi1#
至少对于TextDecoder,我已经在@josephting的注解的帮助下找到了一种解决方法,这真的很糟糕,因为它需要你安装一个dev依赖项,这个依赖项也被弃用了,不再被维护,叫做text-encoding。首先,您需要在jest.config.js中定义setupFiles:
TextDecoder
text-encoding
jest.config.js
setupFiles
[...] setupFiles: ['./tests/setupEnv.js'], [...]
您还需要在您的setupEnv.js中全局使用上述软件包:
setupEnv.js
TextDecoder = require('text-encoding').TextDecoder;
k4aesqcs2#
我找到了一个解决这个问题的方法,我在jest中添加了TextEncoder和TextDecoder作为全局变量。我把这个加到我的jest.config
jest.config
const { TextDecoder, TextEncoder } = require('util') module.exports = { globals: { TextDecoder: TextDecoder, TextEncoder: TextEncoder, } }
qnakjoqk3#
如果你正在使用笑话,那么最好的解决方案是从亚瑟Medeiros:只允许jest访问它需要的全局变量,注意你可能不需要导入util,因为TextDecoder和TextEncoder应该在jest配置文件的全局范围内;你只需要globals: { TextDecoder, TextEncoder },在你的配置文件的导出.
util
TextEncoder
globals: { TextDecoder, TextEncoder },
import { TextDecoder, TextEncoder } from 'node:util'; // (ESM style imports) global.TextDecoder = TextDecoder; global.TextEncoder = TextEncoder; // Do whatever you wanted to do... (for me, it was using node-fetch)
3条答案
按热度按时间ghhaqwfi1#
至少对于
TextDecoder
,我已经在@josephting的注解的帮助下找到了一种解决方法,这真的很糟糕,因为它需要你安装一个dev依赖项,这个依赖项也被弃用了,不再被维护,叫做text-encoding
。首先,您需要在
jest.config.js
中定义setupFiles
:您还需要在您的
setupEnv.js
中全局使用上述软件包:k4aesqcs2#
我找到了一个解决这个问题的方法,我在jest中添加了TextEncoder和TextDecoder作为全局变量。
我把这个加到我的
jest.config
qnakjoqk3#
如果你正在使用笑话,那么最好的解决方案是从亚瑟Medeiros:只允许jest访问它需要的全局变量,注意你可能不需要导入
util
,因为TextDecoder
和TextEncoder
应该在jest配置文件的全局范围内;你只需要globals: { TextDecoder, TextEncoder },
在你的配置文件的导出.