我正在寻找使用Jest为GraphQL解析器编写测试,但实际上不知道从哪里开始。解析器是简单的CRUD函数,可以在NodeJS上使用mongoose写入MongoDB数据库。
类型:
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);
});
}),
},
如何在不与数据库交互的情况下进行测试?
答案 0 :(得分:0)
遵循这些步骤
编写测试并像这样使用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将使用它,并确保根据模式连接到数据库。