gpt4 book ai didi

spring-mvc - Spring MVC Controller 的集成测试

转载 作者:行者123 更新时间:2023-12-03 15:59:38 25 4
gpt4 key购买 nike

我有一个 Controller ,它返回 XML 数据以响应调用。下面是代码

@RequestMapping(value = "/balance.xml",method = RequestMethod.GET,produces="application/xml")
public AccountBalanceList getAccountBalanceList(@RequestParam("accountId") Integer accountId)
{
AccountBalanceList accountBalanceList = new AccountBalanceList();
List<AccountBalance> list = new ArrayList<AccountBalance>();
list = accountService.getAccountBalanceList(accountId);

accountBalanceList.setList(list);
return accountBalanceList;
}

accountBalanceList 是用 xml 注释的。我从这个调用中得到的响应是这样的
<points>
<point>
<balance>$1134.99</balance>
<lots>10000.0</lots>
<onDate>2012-11-11 15:44:00</onDate>
</point>
</points>

我想为此 Controller 调用编写集成测试。我知道如何使用 JSON 响应测试 Controller ,但我不知道如何测试响应何时为 XML。任何帮助将不胜感激。

问候

最佳答案

假设您在 Spring 3.2+您可以使用 Spring MVC 测试框架(在 3.2 之前,它是一个独立项目, available on github )。改编 official documentation 中的示例:

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration("test-servlet-context.xml")
public class AccountIntegrationTests {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}

@Test
public void getAccount() throws Exception {
Integer accountId = 42;
this.mockMvc.perform(get("/balance.xml")
.param("accountId", accountId.toString())
.accept("application/json;charset=UTF-8"))
.andExpect(status().isOk())
.andExpect(content().contentType("application/xml"));
.andExpect(content().xml("<points>(your XML goes here)</points>"));
}
}

验证 XML 文件本身的内容将是从响应内容中读取它的问题。

编辑:回复:获取 XML 内容
content()返回 ContentResultMatchers 的实例,它有几种方便的方法来测试内容本身,具体取决于类型。更新了上面的示例以显示如何验证 XML 响应的内容( 请注意 :根据文档,此方法需要 XMLUnit 才能工作)

关于spring-mvc - Spring MVC Controller 的集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16208787/

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