Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 用Jest测试GraphQL解析器_Node.js_Mongodb_Mongoose_Graphql_Jestjs - Fatal编程技术网

Node.js 用Jest测试GraphQL解析器

Node.js 用Jest测试GraphQL解析器,node.js,mongodb,mongoose,graphql,jestjs,Node.js,Mongodb,Mongoose,Graphql,Jestjs,我希望使用Jest为GraphQL解析器编写测试,但我真的不知道从哪里开始。解析程序是简单的CRUD函数,用于在NodeJ上使用mongoose写入MongoDB数据库 类型: 质疑 解析程序(只读) 如何在不与数据库交互的情况下进行测试?遵循以下步骤 使用环境变量根据模式(生产、测试、开发)更改数据库 导入模式 编写测试并像这样使用graphql const query=`mutation name($id:String!) //dummy example query {

我希望使用Jest为GraphQL解析器编写测试,但我真的不知道从哪里开始。解析程序是简单的CRUD函数,用于在NodeJ上使用mongoose写入MongoDB数据库

类型:

质疑

解析程序(只读)

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

遵循以下步骤

  • 使用环境变量根据模式(生产、测试、开发)更改数据库
  • 导入模式
  • 编写测试并像这样使用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将使用它,确保按照模式连接到数据库。

尤其是MongoDB,有太多的资源。据我所知,这将创建一个模拟服务器,在那里我可以测试mongodb命令,但不能测试graphQL解析器。如果我将解析器文件导入测试,它将连接到“真实”数据库。似乎我需要截取该连接并替换为模拟数据库
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);
    });
  }),
},
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}`));
}