当前位置: 首页 > 知识库问答 >
问题:

MockMvc测试返回404,而不是200,在url中没有前导"/"

宗鸿博
2023-03-14

Spring靴1.5.9及以下版本:

@RunWith(SpringRunner.class)
@AutoConfigureMockMvc
@SpringBootTest
public class BigPoolControllerMockMvcTest {

    @Autowired
    private MockMvc mockMvc;

    @Before
    public void initialize() {
    }

    @Test
    public void testGetDisplayPools() throws Exception {
        this.mockMvc.perform(get(CONTROLLER_PATH + DISPLAY_POOLS_API + "?param=abc")
                .contentType(MediaType.APPLICATION_JSON_UTF8))
                .andDo(print()).andExpect(status().isOk());
    }


}

我一直得到:WARNo.s.web.servlet.PageNotFind-没有找到HTTP请求与URI[api/v1/app/pool]在DispatcherServlet与名称的映射”

共有1个答案

戚俊人
2023-03-14

事实证明,URL需要以“/”开头,mockmvc请求才能找到它:

  @Test
    public void testGetDisplayPools() throws Exception {
        this.mockMvc.perform(get("/" + CONTROLLER_PATH + DISPLAY_POOLS_API + "?amazonRegionCode=us-west-1")
                .contentType(MediaType.APPLICATION_JSON_UTF8))
                .andDo(print()).andExpect(status().isOk());
    }
 类似资料:
  • 我编写了controller,它为每个映射使用了不同的值。现在我将它简化为对所有映射使用相同的值,但是我不知道如何使test工作,因为它在每个映射上都返回404。 这里是我的控制器: 和我的测试: 404及以下所有测试结果: 在org.springframework.test.util.assertionerrors.fail(assertionerrors.java:59)在org.spring

  • 我试图在springboot中使用集成测试,因此我使用SpringBootTest注释构建了一些示例测试。我的样本测试是: 并具有以下控制器类 不幸的是,在响应正文中,我收到消息404未找到。在调试模式下,我看到它永远不会到达定义的控制器。从配置的角度来看,我是否错过了什么?我还试图使用MockMvc: 但也没有成功(同样是404而不是202)。 已编辑 配置类如下所示:

  • 我正在尝试为我的Spring项目运行集成测试,它是一个简单的get方法,用于从DB返回给定id的字符串输出。但是在Mockmvc中,我一直在Mockmvc上得到一个NullPointerException。在我的测试范围内执行。 以下是测试: 这里是控制器-输出控制器: 完全错误是:

  • 我在过去一周一直在研究,无法找到解释为什么我在springMVC中的测试用例会抛出404。它会记录未找到页面的警告。我非常确定我的配置是正确的,并且应用程序上下文已加载。为什么mockMvc不执行请求并返回200状态等。? 这是我的测试课: 跟踪以及控制台日志: 最后是我的背景。xml: 如果还需要什么来分析这个问题,请告诉我。

  • 我有一个名为Backend(端口:9090)的服务,位于Zuul(端口:8080)后面。 浏览器在Zuul上调用GET方法,执行重定向。 示例调用:http://localhost:8080/testredirect 结果: 浏览器收到Http状态=200 浏览器URL:http://localhost:8080/testredirect 浏览器显示:Hello world 预期结果: 浏览器应接

  • 免责声明:我刚到Java、spring和spring boot。 我想让spring boot返回一个404时,试图张贴到一个不存在的URL。但是,现在它返回一个405,带有一个仅包含GET和head的Allow头。有没有一种方法可以自定义哪些HTTP方法是允许的,这样我就可以得到一个404?我尝试过实现一个自定义的ErrorController,但这似乎不起作用。 需要说明的是:这是当我发帖到一