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

Spring Boot GraphQL集成测试返回404 Not Found问题求助

解决Spring Boot GraphQL Test集成测试404问题

我来帮你排查这个404的问题,之前我也碰到过类似的情况,咱们一步步来解决:

首先明确核心问题:你使用@GraphQLTest注解编写集成测试时,Spring Boot GraphQL Test库没有正确初始化GraphQL端点,导致请求/api/graphql返回404未找到。

可能的解决方案

1. 确保依赖版本完全一致

版本不匹配是这类问题的高发原因,一定要保证graphql-spring-boot-starter和graphql-spring-boot-test的版本完全相同。比如Maven项目的pom.xml里要这么配置:

<dependency>
    <groupId>com.graphql-java-kickstart</groupId>
    <artifactId>graphql-spring-boot-starter</artifactId>
    <version>你的统一版本号</version>
</dependency>
<dependency>
    <groupId>com.graphql-java-kickstart</groupId>
    <artifactId>graphql-spring-boot-test</artifactId>
    <version>你的统一版本号</version>
    <scope>test</scope>
</dependency>

2. 确认端点路径配置并在测试中指定

如果你在application.properties或application.yml里自定义了GraphQL端点路径(比如graphql.servlet.mapping=/api/graphql),需要确保测试上下文能读取到这个配置,或者手动在测试请求里指定路径:

GraphQLResponse response = graphQLTestTemplate.postForResource("/api/graphql", "graphql/register.graphql");

3. 切换到完整上下文测试

有时候@GraphQLTest的切片测试会漏掉一些必要的Bean,导致端点无法注册。这时候可以用@SpringBootTest配合@AutoConfigureGraphQLTester来替代切片测试,加载完整的Spring上下文:

@SpringBootTest
@AutoConfigureGraphQLTester
public class UserTest {
    @Autowired
    private GraphQLTestTemplate graphQLTestTemplate;

    @Test
    public void createUser() throws IOException {
        GraphQLResponse response = graphQLTestTemplate.postForResource("graphql/register.graphql");
        assertNotNull(response);
        assertTrue(response.isOk());
        assertEquals("1", response.get("$.data.post.id"));
    }
}

4. 确保GraphQL配置类被扫描到

如果你的GraphQL Schema定义、Resolver等配置类不在默认的包扫描路径下,@GraphQLTest可能无法加载这些类,导致端点无法创建。可以在测试类上用@Import导入必要的配置类:

@GraphQLTest
@Import(YourGraphQLConfig.class)
public class UserTest {
    // 测试代码不变
}

这些方案基本覆盖了相关讨论里的核心解决思路,你可以逐个尝试,应该能解决404的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:47:37