You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置GraphQlTester读取main/resources/graphql-documents/目录文件

配置GraphQlTester读取自定义目录的GraphQL文件

你可以通过自定义ResourceDocumentSource Bean,并在构建GraphQlTester时指定该数据源,让它读取main/resources/graphql-documents/目录下的文件,无需复制文件到测试目录。

步骤1:定义自定义的ResourceDocumentSource

创建配置类,加载main/resources/graphql-documents/下的所有GraphQL文件:

@Configuration
public class GraphQlTestConfig {

    @Bean
    public ResourceDocumentSource customGraphQlDocumentSource() {
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
            // 匹配graphql-documents目录下所有子目录的.graphql文件
            Resource[] documents = resolver.getResources("classpath:graphql-documents/**/*.graphql");
            return new ResourceDocumentSource(documents);
        } catch (IOException e) {
            throw new RuntimeException("加载GraphQL文档失败", e);
        }
    }
}

步骤2:在测试类中使用自定义数据源

在测试类中注入自定义的ResourceDocumentSource,并通过GraphQlTester.Builder指定该数据源:

@SpringBootTest
@Import(GraphQlTestConfig.class)
class MyGraphQlApiTests {

    private final WebGraphQlTester graphQlTester;

    // 通过构造器注入Builder和自定义数据源
    MyGraphQlApiTests(WebGraphQlTester.Builder testerBuilder, ResourceDocumentSource customDocumentSource) {
        this.graphQlTester = testerBuilder.documentSource(customDocumentSource).build();
    }

    @Test
    void testMyQuery() {
        MyResult expectedResult = // 构造预期结果
        graphQlTester.documentName(GQL_MY_QERY) // 对应graphql-documents下的GQL_MY_QERY.graphql文件
                .variable(ID, "myId")
                .execute()
                .path(GQL_MY_QERY)
                .entity(MyResult.class)
                .satisfies(actualResult -> assertEquals(expectedResult, actualResult));
    }
}

注意事项

  • 确保documentName指定的名称与graphql-documents/目录下的文件名完全一致(不含.graphql后缀)
  • 如果GraphQL文件分布在子目录中,documentName需要包含相对路径,比如"subdir/my-query"对应graphql-documents/subdir/my-query.graphql
  • 若使用ExecutionGraphQlTester而非WebGraphQlTester,配置方式完全一致,只需替换Builder类型即可

内容的提问来源于stack exchange,提问作者Ebad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:04:59