我写了一个软件,它解析和格式化了graphql解析器函数的第四个参数(info对象),以便在其他地方使用。我想为这个软件写单元测试。具体来说,我不想自己构建GraphQLResolveInfo
对象,因为这样做非常麻烦、容易出错并且难以维护。相反,我想编写人类可读的查询字符串,并将它们转换为GraphQLResolveInfo
对象,以便将它们传递给我的软件。
在广泛的谷歌搜索和阅读graphql-js
源代码之后,我还没有找到一种简单的方法来完成他们在内部所做的事情。我真的希望我错过了什么。
我并不打算使用graphql-tag
库,因为这只会生成一个与GraphQLResolveInfo
类型格式完全不同的AST。
以前有人这么做过吗?帮助将不胜感激!
2条答案
按热度按时间a0x5cqrl1#
我将继续关注这个问题,看看是否会沿着更好的答案,但我最终设法解决了我的特定问题,根据我的特定用例的需要,创建了
GraphQLResolveInfo
对象的近似值。GraphQLResolveInfo
对象由多个属性组成,其中两个属性称为fieldNodes
和fragments
。实际上,两者都是graphql-tag
从查询字符串生成的相同AST的一部分。这些是GraphQLResolveInfo
对象中与我编写的软件有关的部分,其余部分被忽略。所以我是这么做的:
从
graphql-tag
生成的AST中,我提取并修改了操作和片段定义,使它们看起来与在GraphQLResolveInfo
对象中一样。这绝不是完美的,可能会在未来根据我的软件如何发展而改变,但它是我的特定问题的相对简短的解决方案。3duebb1j2#
我最近不得不这样做,以便将REST端点添加到我的服务器上,因为ChatGPT插件不支持GraphQL。这是我想到的: