首页 > 解决方案 > 开玩笑 mockImplementation 不是一个函数

问题描述

我有这个简化的 Jest 测试:

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);
  });
});

我从文档中得到了这个模拟。当我不模拟测试工作正常时,因为login模块连接到数据库。但是当我使用上面的模拟时,我得到:

TypeError: findUserByEmail.mockImplementation is not a function

你能帮我吗?

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

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,
  });
};

标签: javascriptnode.jsjestjsmocking

解决方案


推荐阅读