Node.js 如何使用jest测试需要formData并使用multer的端点?
我有TypeScript设置,我正在测试一个端点,该端点将Node.js 如何使用jest测试需要formData并使用multer的端点?,node.js,typescript,jestjs,multer,form-data,Node.js,Typescript,Jestjs,Multer,Form Data,我有TypeScript设置,我正在测试一个端点,该端点将FormData作为输入,并使用multer处理多部分数据(pdf文件);看起来是这样的: app.post("/v1/sources/send-email", upload.single('file'), handledEmail ); import FormData from 'form-data'; ... const response = await request(app) .post("
FormData
作为输入,并使用multer
处理多部分数据(pdf文件);看起来是这样的:
app.post("/v1/sources/send-email",
upload.single('file'),
handledEmail
);
import FormData from 'form-data';
...
const response = await request(app)
.post("/v1/sources/send-email")
.send(formData)
.set("X-AUTH-TOKEN", validToken);
我的jest测试有一个post请求,它在send
方法中将伪formData
传递给它,如下所示:
app.post("/v1/sources/send-email",
upload.single('file'),
handledEmail
);
import FormData from 'form-data';
...
const response = await request(app)
.post("/v1/sources/send-email")
.send(formData)
.set("X-AUTH-TOKEN", validToken);
但是,当我尝试创建formData
时,我得到一个错误:
let formData = new FormData();
formData.append('file', fs.createReadStream('path/to/file.pdf'));
错误是:
Argument of type 'ReadStream' is not assignable to parameter of type 'string | Blob'.
关于如何在这个formData变量上获取这个PDF文件,以便将其传递给测试的post请求,有什么想法吗
我的tsconfig.json
如下所示:
{
"compilerOptions": {
"allowJs": false,
"baseUrl": ".",
"esModuleInterop": true,
"lib": ["DOM", "ES2018"],
"module": "commonjs",
"moduleResolution": "node",
"noImplicitAny": true,
"noUnusedLocals": true,
"outDir": "dist",
"paths": {
"*": [
"src/main/ts/*",
"node_modules/*"
]
},
"sourceMap": true,
"target": "es6"
},
"include": ["src/main/ts/**/*"]
}
我看到有人说创建一个模拟FormData
的函数可能会起作用,但当我执行以下操作时,global
赋值中出现了一个错误:
function FormDataMock() {
this.append = jest.fn();
}
global.FormData = FormDataMock();
错误显示类型“Global”上不存在属性“FormData”。这是您得到的typescript编译错误吗?你能分享你的TS配置和你正在使用的类型定义吗,如果有的话?@shkaper是的,这是一个TS设置,我想我的主要问题是如何模拟预期的
FormData
,这样我就可以在send
命令中将它传递给post
请求。这是你得到的typescript编译错误吗?你能分享你的TS配置和你正在使用的类型定义吗,如果有的话?@shkaper是的,这是一个TS设置,我想我的主要问题是如何模拟预期的FormData
,这样我就可以在send
命令中将它传递给post
请求。