如何使用玩笑来测试需要formData和使用multer的端点?

时间:2019-09-05 18:30:15

标签: node.js typescript jestjs multer form-data

我具有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'.

0 个答案:

没有答案