类型“{}”缺少类型“Request”中的以下属性:get、header、accepts、acceptsCharsets 以及其他 67 个属性

ate*_*kov 4 node.js express typescript google-cloud-functions

我正在离线模式下测试我的端点,模拟/伪造所有数据。基于云功能文档的Firebase单元测试,他们使用它如下:

const req = { query: {text: 'input'} };
const res = {
  redirect: (code, url) => {
    assert.equal(code, 303);
    assert.equal(url, 'new_ref');
    done();
  }
};

// Invoke addMessage with our fake request and response objects
myFunctions.addMessage(req, res);
Run Code Online (Sandbox Code Playgroud)

我的代码类似:

const req = {

}

const res = {

}

updateUser(req, res)

// and this is 'updateUser()' function in another file
export default functions.https.onRequest(async (req, res) => { ... }
Run Code Online (Sandbox Code Playgroud)

所以我收到以下错误:

“{}”类型的参数不可分配给“Request”类型的参数。类型“{}”缺少类型“Request”中的以下属性:get、header、accepts、acceptsCharsets 等 67 个属性。

如何避免将 67 个属性全部放入?我只想提供“方法”、“查询”或“主体”属性。

ate*_*kov 5

谢谢@mamichels,在他们的帮助下我已经成功解决了这个问题。因此,我发布解决方案以防万一,它可能会对某人有所帮助。我将 Firebase CF 与 Express 结合使用。

import * as express from "express"

...

it("should do something", async () => {
    const req = {
      method: "POST"
    }

    const res = {

    }

    updateUser(req as express.Request, res as express.Response)
})
Run Code Online (Sandbox Code Playgroud)

我的 updateUser 看起来像:

export default functions.https.onRequest(async (req, res) => {
  ...
})
Run Code Online (Sandbox Code Playgroud)