首页 > 解决方案 > 如何用 es6(没有打字稿)开玩笑地模拟 Prisma 客户端?

问题描述

Prisma 文档有模拟客户端和使用 jest 和 typescript 进行单元测试的示例。有没有办法在不使用 TypeScript 的情况下开玩笑地模拟客户端?

如果您能举一个简单的例子,我将不胜感激。

补充一点:我在我的项目中使用了所有使用 prisma 的函数的依赖注入。

标签: node.jsunit-testingormjestjsprisma

解决方案


我现在的解决方案:我手动模拟数据库对象并将其传递给使用它的函数:我不确定这有多大用处,但它有助于避免调用真实数据库。

const mocked_db = {
    user: {
        findFirst: jest.fn(() => Promise.resolve(
            {
                id: 2,
                first_name: "Basel",
                last_name: "Akasha"
            }
        ))
    }
}

it("It should work blah blah bla", async () => {
    let user_details= {
       id: 2,
       first_name: "Basel",
       last_name: "Akasha"
    }
    
    let signup = await getUser(
        mocked_db // takes thew DB object is a parameter (normally you would pass your Prisma client instance)
    )

    await expect(.... // whatever you'r expect is
})'

推荐阅读