node.js - 用 Jest 测试 GraphQL 解析器

标签 node.js mongodb mongoose graphql jestjs

我想使用 Jest 为 GraphQL 解析器编写测试,但真的不知道从哪里开始。解析器是使用 NodeJS 上的 Mongoose 写入 MongoDB 数据库的简单 CRUD 函数。

类型:

type Article {
  _id: ID!
  title: String
  authors: [User]
}

查询

extend type Query {
  articles: [Article]
  article(_id: ID!): Article
}

解析器(只读)

Query: {
  articles: () => new Promise((resolve, reject) => {
    Article.find({}, (err, articles) => {
      if (err) reject(err);
      else resolve(articles);
    });
  }),
  article: (root, {
    _id,
  }) => new Promise((resolve, reject) => {
    Article.findById(_id, (err, article) => {
      if (err) reject(err);
      else resolve(article);
    });
  }),
},

如何在不与数据库交互的情况下进行测试?

最佳答案

按照这些步骤

  • 使用环境变量根据模式(生产、测试​​、开发)更改数据库
  • 导入模式
  • 像这样编写测试和使用 graphql

    const query=`mutation name($id:String!)  //dummy example query
       {
            user(id:$id)
            {
             //fields goes here
              }
       }` 
    const result = await graphql(schema, query, {}, {}, data);
    if (result.data) {
        return result.data.addEventTag
    } else {
        throw new Error(...result.errors.map(err => ` \n${err.message}`));
    }  
    

所以不需要直接导入解析器,graphQl会使用它,一定要按照模式连接数据库。

关于node.js - 用 Jest 测试 GraphQL 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50501324/

相关文章:

node.js - Nightmare HTTPS 选项 : ignoreSslErrors and sslProtocol not working for phantomJS

node.js - Nodejs 识别异步任务的输出

javascript - 具有多策略 sigup 的用户表架构

javascript - Node.js mysql 查询未定义

javascript - 如何发布 meteor 集合中的所有记录......除了一两个

javascript - 无法在回调中监听/处理 EventEmitter

node.js - 为集合中的每个博主选择最新帖子

node.js - 使用 Node js 进行多个连接时 Mongodb 崩溃

node.js - 使用 Mongoose 删除子文档返回错误?

mongodb - $elem匹配和更新