首页 > 解决方案 > 如何测试使用 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对象,我还需要以某种方式生成该对象。我怎样才能做到这一点?还是我以错误的方式解决这个问题?

标签: graphqlnestjs

解决方案


推荐阅读