Javascript Jest Mock实现不是一个函数

Javascript Jest Mock实现不是一个函数,javascript,node.js,jestjs,mocking,Javascript,Node.js,Jestjs,Mocking,我有一个简化的玩笑测试: import login from "../../src/controller/auth/login"; import findUserByEmail from "../../src/api/db/find-user-by-email"; jest.mock("../../src/api/db/find-user-by-email"); const mockedfindUserByEmail = findUs

我有一个简化的玩笑测试:

import login from "../../src/controller/auth/login";
import findUserByEmail from "../../src/api/db/find-user-by-email";

jest.mock("../../src/api/db/find-user-by-email");
const mockedfindUserByEmail = findUserByEmail as jest.Mocked<typeof findUserByEmail>;

describe("Login API", () => {
  test('should return 401', async () => {

    const req = {
      email: "email@domain.com",
      password: "password"
    };

    mockedfindUserByEmail.mockImplementation(async () => false)

    expect(await login(req).status).toBe(401);
  });
});
你能帮忙吗

“通过电子邮件查找用户”文件:

import { User } from "../../entities/main/user";
const db: any = require("../../db/models");

export default async (email: string)
  : Promise<User> => {
  return await db.user.findOne({
    where: { email },
    raw: true,
  });
};
从“../../entities/main/User”导入{User};
const db:any=require(“../../db/models”);
导出默认异步(电子邮件:字符串)
:承诺=>{
返回wait db.user.findOne({
其中:{email},
raw:是的,
});
};

可能
。/../src/api/db/find user by email
没有默认导出?@Teneff谢谢!但它确实有默认的导出。我编辑了这个问题-添加了代码。看起来不错,也许你应该尝试制作一个可复制的示例。或者如果它是一个打字错误,你应该把它转换成jest.Mocked,我该怎么做?如果这应该是我刚刚更新问题的方式,那么我仍然得到Typescript错误
属性“mockImplementation”在类型“Mocked Promise>”上不存在。
@Teneff好的,我发现了我的错误。我不应该模仿
通过电子邮件找到用户。我应该模拟DB模块本身(第二行中通过电子邮件导入find user的模块)。我模拟了它,测试在没有访问数据库的情况下运行。谢谢你的帮助!
import { User } from "../../entities/main/user";
const db: any = require("../../db/models");

export default async (email: string)
  : Promise<User> => {
  return await db.user.findOne({
    where: { email },
    raw: true,
  });
};