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

标签 spring-mvc model-view-controller integration-testing spring-mvc-test

我有一个 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/

相关文章:

Java、Spring、JSP编码

java - Spring 动态列表绑定(bind)

asp.net-mvc - ASP.Net MVC 强类型部分 View 和继承属性

ios - MVC - View 知道 Controller 吗?

javascript - 主干JS : Load more items into a collection

java - 从可配置的 JAR 运行 JMeter

MySQL数据一致性: multiple users buy the same product at the same time

java - Spring REST 实现错误 404

Grails 集成测试 Bootstrap

grails - 进行集成测试时使domain.save(failOnError:true)失败