我具有TypeScript设置,并且正在测试一个端点,该端点将FormData
作为输入并使用multer
处理多部分数据(pdf文件);看起来像这样:
app.post("/v1/sources/send-email",
upload.single('file'),
handledEmail
);
我的笑话测试有一个发布请求,该请求通过formData
方法将伪send
传递给它,它看起来像这样:
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文件的任何想法,这样我就可以将其传递给测试的发帖请求了?
我的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/**/*"]
}
我看到某人here说可以创建模拟FormData
的函数,但是当我执行以下操作时,global
分配中存在错误:
function FormDataMock() {
this.append = jest.fn();
}
global.FormData = FormDataMock();
错误显示Property 'FormData' does not exist on type 'Global'.