【问题标题】:Testing flow using prisma and graphql使用 prisma 和 graphql 测试流程
【发布时间】:2021-01-01 21:41:17
【问题描述】:

我将 prisma-graphql 用于后端服务器,并将 jest & supertest 用于测试 graphql 查询。 对于测试环境,我想建立一个内存数据库来在测试阶段创建和检索数据。我的问题是,

  1. 为 prisma 客户端配置测试数据库的好方法是什么?我需要在 before all 阶段配置内存数据库吗?像下面这样?

    //setup.js for test
    
    beforeAll(async() => {
      db = new sqlite3.Database(':memory:', (err) => {
        if (err) {
          return console.error(err.message);
        }
        console.log('Connected to the in-memory SQlite database.');
      });
    })
    
  2. 如何以及何时可以运行 prisma 的命令?例如,我需要在内存数据库中运行以下命令来创建表。 https://github.com/prisma/prisma/issues/732 似乎暗示内存迁移没有意义——换句话说,它不支持这样的事情?

    npx prisma migrate --experimental save/up
    npx prisma generate
    

【问题讨论】:

    标签: testing jestjs graphql prisma


    【解决方案1】:

    我建议针对实际数据库进行集成测试,因为这将是针对您执行的查询/突变测试代码的好方法。

    我创建了一个 repo here,它针对实际的 DB 执行集成测试,这个是针对 GraphQL 的。这些包含从头到尾的整个 Jest 设置。

    【讨论】:

    • 谢谢。关于 PrismaTestEnvironment,您是否以编程方式制作测试数据库以测试 Graphql 解析器?
    • 另外,有没有什么方法可以设置数据库提供者也使用环境变量?
    • 是的,我正在为每个测试套件自动创建一个测试数据库。至于您的第二个问题,无法通过环境变量传递数据库提供程序,但您可以使用this 传递多个提供程序
    • 感谢您的回答。还有一个问题,如果在运行测试时显示“当前数据库中不存在该表 ~~”,您是否知道可能出了什么问题?测试代码在我的本地配置中运行良好,但在 EC2 中它失败并说表没有正确制作。我首先怀疑 npm migrate up --experimental 没有工作,但是当我手动执行它时它工作正常.不知道出了什么问题(我检查了文件权限,删除了整个节点模块并重新安装,在不同的目录中执行等等。)
    • 我想通了。奇怪的是,我必须先执行迁移保存,然后向上迁移以将架构反映到 sqlite 数据库。知道为什么会这样吗?
    猜你喜欢
    • 2022-07-10
    • 2020-03-31
    • 2021-07-04
    • 2021-08-30
    • 2018-09-05
    • 2019-06-16
    • 2019-02-20
    • 2019-12-18
    • 2018-11-02
    相关资源
    最近更新 更多