问题:我想测试一个位于 .graphql 文件中的GraphQL查询,如下所示:

#import '../../fragments/Widget.graphql'

query WidgetFragment($id: ID) {
    readWidgetFragment(id: $id) {
        ...Widget
    }
}

要使用模拟的解析器和数据创建GraphQL架构,我使用 makeExecutableSchemaaddMockFunctionsToSchema 来自graphql-tools .

要从jest测试中运行查询,我的理解是我需要使用graphql-js中的 graphql() 函数 .

这个函数需要查询为 string ,所以我尝试了两种不同的方法,但它们都没有工作:

  • .graphql 文件解析为普通文本文件,给我原始字符串(使用我的jest配置中的jest-raw-loader) . 这给了我: Failed: Errors in query: Unknown fragment "Widget". 当我运行查询时 .

  • 使用jest-transform-graphql.graphql 文件解析为 query 对象 . 我认为这应该是正确的方法,因为它应该正确解决任何导入的碎片 . 但是,要执行查询,我需要将 query.loc.source.body 传递给 graphql ,这会产生与选项1相同的错误消息 .