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

简单的Spring REST测试抛出HttpMediaTypeNotSupportedException

闾丘朗
2023-03-14

我在一个类中设置了一个简单的Spring REST方法,它应该只返回在POST请求中发送给它的文本作为响应。MyService.java类中的My方法

@RequestMapping(value = "/my/url", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE, produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> myMethod(@RequestBody final String body) {
    return new ResponseEntity<String>(body, HttpStatus.OK);
}

我有一个单元测试,它使用Spring的MockMvc来测试方法:

@Autowired
private MyService service;

private MockMvc mockMvc;

@Before
public void setup() throws Exception {
    mockMvc = standaloneSetup(service).build();
}

@Test
public void myTest() throws Exception {
    Assert.assertNotNull(service); // Class has been instantiated

    final String content = "Hello world";
    final String url = "/my/url";

    final MvcResult result = mockMvc.perform(post(url) //
            .content(content) //
            .accept(MediaType.TEXT_PLAIN_VALUE)) //
            .andExpect(status().isOk()) //
            .andReturn();
}

415是“内容不受支持”错误。

Spring版本4.1.7。

关于我做错了什么有什么建议吗?提前道谢。

共有1个答案

邢起运
2023-03-14

修好了。执行POST时缺少内容类型。我将此添加到测试中,并且成功地工作了:

.header("Content-Type", MediaType.TEXT_PLAIN_VALUE)
 类似资料:
  • 虽然这个测试可能是微不足道的,但它说明了单元测试的基本元素。 我们使用解释这个测试是什么,我们使用来断言我们从测试中得到什么样的结果。 这些是用户定义的,因此在这些消息中描述性和准确性是一个好主意。 诸如“应该工作”或“测试服务”之类的消息不能真正解释发生了什么,并且在整个应用程序上运行多个测试时可能会产生混淆。 我们的实际测试是基本的,我们使用制定一个场景,并使用来断言我们从该场景预期的结果条件

  • import { CounterActions, INCREMENT_COUNTER, DECREMENT_COUNTER, } from './counter'; // Mock out the NgRedux class with just enough to test what we want. class MockRedux extends NgRedux<any> { c

  • 我用Robolectric测试写了一个简单的hello-world。 我已经向build.gradle添加了正确的依赖项: 下面是我要测试的简单: 我运行的是Android Studio2.0预览版3B。 问题是:如何避免失败?

  • 编辑:我还尝试打印出,它表示有1。

  • 我用Spock测试Java代码。我测试这段代码: 我写了一个测试: 它失败是因为抛出了另一个CustomException。但是在块中,我捕获这个异常并抛出一个,因此我希望我的方法将抛出,而不是。如何测试它?

  • 我有一个方法: 这是用户授权测试的样子: 有没有办法检查用户输入错误密码的情况?因为在我发送错误密码的情况下,它不起作用,因为 使在你检查密码之前返回结果。