【问题标题】:How can I mock Prisma client with es6 (Without typescript) in jest?如何用 es6(没有打字稿)开玩笑地模拟 Prisma 客户端?
【发布时间】:2021-10-09 22:41:45
【问题描述】:

Prisma 文档中有模拟客户端和使用 jest 和 typescript 进行单元测试的示例。有没有什么方法可以在不使用 TypeScript 的情况下模拟客户端?

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

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

【问题讨论】:

  • 显示被测代码
  • 您能否详细说明您在采用unit testing docs 的哪个方面时遇到问题?除了声明性类型/接口之外,typescript 和 javascript 之间没有太大区别。正如另一位用户提到的,一些代码也可能会有所帮助。
  • 我对 TypeScript 语法不是很熟悉。所以这一切对我来说似乎很奇怪。特别是模块和 context.ts 文件的导入。我的代码只是一个简单的函数,它使用作为参数传递的 Prisma 客户端向数据库添加一个整体。

标签: node.js unit-testing orm jestjs prisma


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-02-06
    • 2021-01-22
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2020-01-07
    • 2017-10-02
    相关资源
    最近更新 更多