gpt4 book ai didi

java - 如何为 MockMvcRequestBuilders 构建获取查询字符串?

转载 作者:行者123 更新时间:2023-12-01 19:50:40 25 4
gpt4 key购买 nike

我正在使用 spring-boot-testMockMvcRequestBuilders 来测试一些 GET 其余 Web 服务。

问题:是否可以自动将 bean 转换为 get-query

示例:

@AutoConfigureMockMvc
public class WebTest {
@Autowired
protected MockMvc mvc;

@Test
public void test() {
MyRequest req = new MyRequest();
req.setFirstname("john");
req.setLastname("doe");
req.setAge(30);

mvc.perform(MockMvcRequestBuilders
.get(path)
.contentType(MediaType.APPLICATION_JSON)
.param(...) //TODO how to automatically add all params?
.andExpect(status().isOk());
}
}

public class MyRequest {
private String firstname;
private String lastname;
private int age;
}

我需要自动翻译为:?firstname=john&lastname=doe&age=30,但以更通用的方式不必静态键入参数。

最佳答案

我认为没有任何现成可用的东西可以满足此特定要求,但您可以使用 BeanWrapperImpl 将其组合在一起,以从 MyRequest 访问属性code> 并将每个转换为对请求构建器上的 param 的调用:

MyRequest req = new MyRequest();
req.setFirstname("john");
req.setLastname("doe");
req.setAge(30);

MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders
.get(path).contentType(MediaType.APPLICATION_JSON);

for (PropertyDescriptor property : new BeanWrapperImpl(req).getPropertyDescriptors()) {
if (property.getWriteMethod() != null) {
requestBuilder.param(property.getName(),
property.getReadMethod().invoke(req).toString());
}
}

mvc.perform(requestBuilder).andExpect(status().isOk());

关于java - 如何为 MockMvcRequestBuilders 构建获取查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51405830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com