我正在使用Spring 3.2.11.RELEASE和JUnit 4.11。使用Spring mockMvc框架,如何检查返回JSON数据的方法是否包含特定的JSON元素?我有
mockMvc.perform(get("/api/users/" + id))
.andExpect(status().isOk())
.andExpect(content().string("{\"id\":\"" + id + "\"}"));
但是这会检查与返回的字符串的完全匹配,我宁愿检查JSON字符串是否包含我的本地字段“id”所包含的值。
答案 0 :(得分:16)
看起来你可以传递一个Hamcrest Matcher而不是一个字符串。应该是这样的:
mockMvc.perform(get("/api/users/" + id))
.andExpect(status().isOk())
.andExpect(content().string(org.hamcrest.Matchers.containsString("{\"id\":\"" + id + "\"}")));
答案 1 :(得分:3)
另一种可以获得mockMVC请求的String响应的方法,以便您可以通过其他方式对其进行比较或操作,如下所示:
FBM_Order.sku FBM_Order.quantity-purchased QTY_ON_HND_AF QTY_ON_HND_LO QTY_ON_HND_S QTY_ON_HND_SL
'SCHO645256' 1 2 2 3 1
你还可以在使用String方法时将整个东西包装在assertTrue中:
MvcResult result = mockMvc.perform(get("/api/users/" + id))
.andExpect(status().isOk())
.andReturn();
String stringResult = result.getResponse().getContentAsString();
boolean doesContain = stringResult.contains("{\"id\":\"" + id + "\"}");
我更喜欢批准的答案,我想我会将此作为另一种选择。
答案 2 :(得分:1)
更合适的方法是:
function newTask() {
var i = 0;
i+=1; //or i++
console.log(i);
if(i == 1) {
class NewTask extends React.Component {
render() {
return (<div class="new-task">True</div>);
}
}
ReactDOM.render(<NewTask/>, document.getElementById('forms'));
}
else if(i == 2) {
class NewTask extends React.Component {
render() {
return (document.body.getElementById('new-task'));
}
}
ReactDOM.render(<NewTask/>, document.getElementById('forms'));
}
}