graphql - 如何测试使用 graphql 执行上下文的 Nest.js 参数装饰器
问题描述
我创建了一个装饰器来检索 graphql 查询上下文并用它做一些逻辑。它看起来像这样:
export const GraphQlProjections = (options?: ProjectionOptions) =>
createParamDecorator<ProjectionOptions, ExecutionContext, string[]>(
(opts: ProjectionOptions, ctx: ExecutionContext) => {
const gqlContext = GqlExecutionContext.create(ctx)
const info = gqlContext.getInfo()
const fields = Object.keys(fieldsProjection(info, opts))
return fields
}
)(options)
我想为此编写一些单元测试——但我什至不知道如何去做。
我找到了一些获取装饰器工厂的文档,但这无助于设置/模拟执行上下文以允许。Apollo 服务器文档似乎引用了某种模拟,但没有告诉我如何实现我的目标。
我基本上需要说“给定这个查询,比如说,Query { user { name } }
我的装饰器会返回什么?”
为了实现这一点,我似乎需要以某种方式模拟执行上下文以包含一个GraphQLResolveInfo
对象,我还需要以某种方式生成该对象。我怎样才能做到这一点?还是我以错误的方式解决这个问题?
解决方案
推荐阅读
- typescript - TypeScript 装饰器不适用于派生类
- python-3.x - 如何通过 RTSP 在同一管道中发送音频文件和视频
- c++ - 为什么列表初始化会导致 Seg 错误?
- android - Android制作一个编辑信息片段
- vba - (Access,VBA)根据位于表单记录源上的表中的复选框值更改表单上按钮的颜色
- node.js - 使用 node.js 将 CSV 文件上传为 MongoDB 文档
- typescript - 给定一个现有键,如何在有序的打字稿字符串枚举中获取下一个或上一个键?
- javascript - 如何将输入从 MainThread 发送到节点 js 中的工作线程(Worker_threads)
- php - laravel 5.8 的分页数据
- javascript - Angular Http Delete 请求返回未定义的 [MEAN 堆栈]