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

spring启动测试:@get请求返回,正文为空

太叔何平
2023-03-14

在进行内容协商测试时,尽管响应状态为200,但mock GET在响应体中返回null。

java.lang.AssertionError: Response header 'Content-Type' 
Expected :application/json;charset=UTF-8
Actual   :null

这里是完整的测试类代码。我想验证内容类型是json

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
@AutoConfigureMockMvc
public class ControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    Controller controller;

    @Test
    public void test() throws Exception {
        mockMvc.perform(get("/query?mediaType=json"))
                .andExpect(status().isOk())
                .andExpect(header().string(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE));
    }}

这是我的控制器的endpoint。

    @RestController
    public class Controller {

        @RequestMapping(value = "/query", produces = {"application/json", "application/xml"}, method = RequestMethod.GET)
        public @ResponseBody ResultSet getResults(
                final HttpServletRequest request
        ) throws Throwable {

       // logic  ...
       SearchService search = (SearchService) context.getBean("search");
       ResultSet result = search.getResults();
       return result;
    }

有没有想过为什么身体会返回为空?

共有1个答案

曾苗宣
2023-03-14

问题在于测试类中的控制器定义。在测试控制器时,应该使用它的实际实例。为这个控制获取mockMvc实例,如下所示(您可以在@Before注释设置方法中执行此操作):

mockMvc = MockMvcBuilders.standaloneSetup(new Controller()).build();

 类似资料:
  • 我是SNMP新手,我正在尝试使用SNMP操作,我正在使用http://techdive.in/snmp/snmp4j-snmp-get-example代码,但我无法获得预期的输出。我得到如下空响应: SNMP获取演示正在向代理发送请求。。。从代理Snmp获取响应获取响应=[1.3.6.1.2.1.1.1.0=Null] 当我试图为MIB RFC 1213的OID获取sysDescr时,预期的输出应

  • 当我试图用WebClient发送GET请求时,我响应错误io.netty.channel.AbstractChannel$annotatedConnectException:Connection Delection:localhost/ *WebClient初始化*

  • 我正在尝试对远程服务器进行api调用,最初,我遇到以下错误:

  • 问题内容: 我正在为我们的应用程序开发新的RESTful Web服务。 在某些实体上执行GET时,客户端可以请求实体的内容。如果他们想添加一些参数(例如,对列表进行排序),则可以在查询字符串中添加这些参数。 另外,我希望人们能够在请求正文中指定这些参数。 HTTP / 1.1似乎并未明确禁止这样做。这将使他们能够指定更多信息,可能使指定复杂的XML请求更加容易。 我的问题: 这是个好主意吗? HT

  • 我正在实现请求/应答场景的POC,以便使用Kafka移动基于事件的微服务堆栈。 Spring有两种选择。我不知道哪一个更好用<代码>回复Kafka模板或 第一个是,它可以很容易地配置为有专门的频道来回复每个实例的主题<代码>记录。标题()。添加(新记录头(KafkaHeaders.REPLY_主题,provider.getReplyChannelName()。getBytes()) 消费者不需要知

  • 对于< code>@RequestParam,可以选择将变量声明为< code >可选变量 例如,以下面的类作为补丁endpoint中的参数。可以区分空名称和根本没有名称吗?如果客户机显式地将名称设置为null(而不是忽略名称),我只想将名称设置成null。