node.js - formData bekleyen ve multer kullanan bir endpoint'i test etmek için jest nasıl kullanılır?


TypeScript kurulumum var ve FormData alarak çok parçalı veriyi (pdf dosyası) işlemek için multer kullanan bir uç noktayı test ediyorum; şöyle görünüyor:

app.post("/v1/sources/send-email", 
  upload.single('file'),
  handledEmail
);

Benim jest testimin, send metodunda sahte formData gönderen bir POST isteği var, şöyle görünüyor:

import FormData from 'form-data';
    ...
    const response = await request(app)
      .post("/v1/sources/send-email")
      .send(formData)
      .set("X-AUTH-TOKEN", validToken);

Ancak, aşağıdaki gibi formData oluşturmaya çalıştığımda bir hata alıyorum:

let formData = new FormData();
formData.append('file', fs.createReadStream('path/to/file.pdf'));

Hata şudur:

Argument of type 'ReadStream' is not assignable to parameter of type 'string | Blob'.

Bu PDF dosyasını bu formData değişkenine nasıl ekleyebileceğimle ilgili herhangi bir fikriniz var mı, böylece testin POST isteğine iletebilirim?

Benim tsconfig.json dosyam aşağıdaki gibi görünüyor:

{
  "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/**/*"]
}

Burada birinin FormData'yı taklit eden bir fonksiyon oluşturmanın işe yarayabileceğini söylediğini gördüm, ama aşağıdakileri yaptığımda global atamasında bir hata oluşuyor:

function FormDataMock() {
  this.append = jest.fn();
}
global.FormData = FormDataMock();

Hata, Property 'FormData' does not exist on type 'Global'. diyor.

İlgili makaleler