所以我的问题基本上是这样的: http://i.imgur.com/rE0z7Um.png
这是在@Test方法中调用响应后抛出错误的类:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ComponentScan
@Import(RepositoryRestMvcAutoConfiguration.class)
public class AjaxControllerTest {
static final String DEFAULT_URI = "/api/some_function";
SomeObjects someObjects;
@Autowired
private TestRestTemplate restTemplate;
@Before
public void setUp() {
SortedSet<SomeObject> someObjectsSet = new TreeSet<>();
someObjectsSet.add(new SomeObject());
someObjectsSet.add(new SomeObject());
someObjects = new SomeObjects(someObjectsSet);
}
@Test
public void testGetFullJsonSuccessful() {
ResponseEntity<SomeObjects> response = this.restTemplate.postForEntity(DEFAULT_URI, someObjects, SomeObjects.class);
assertThat(response).isNotNull();
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.CREATED);
assertThat(response.getBody()).isNotNull();
}
}
这是AjaxController类函数:
@PostMapping(value = "/api/some_function", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> someFunction(@RequestBody SomeObjects someObjects, Errors errors) {
AjaxResponseBody result = new AjaxResponseBody();
if (errors.hasErrors()) {
result.setMsg(errors.getAllErrors().stream().map(x -> x.getDefaultMessage()).collect(Collectors.joining(";")));
return ResponseEntity.badRequest().body(result);
}
Set<SomeObject> someObjectsSet = new TreeSet<>();
if (someObjectsSet.isEmpty()) {
result.setMsg("No data found.");
} else {
result.setMsg("Success");
}
result.setResult(someObjectsSet);
return ResponseEntity.ok(result);
}
Ajax响应对象:
public class AjaxResponseBody {
private String msg;
private Set<SomeObject> result;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Set<SomeObject> getResult() {
return result;
}
public void setResult(Set<SomeObject> result) {
this.result = result;
}
}
和参与的POJO:
public class SomeObject implements Comparable<SomeObject> {
private String str;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SomeObject that = (SomeObject) o;
return str != null ? str.equals(that.str) : that.str == null;
}
@Override
public int hashCode() {
return str != null ? str.hashCode() : 0;
}
@Override
public int compareTo(SomeObject o) {
return 0;
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
public class SomeObjects {
private SortedSet<SomeObject> someObjects;
public SomeObjects(SortedSet<SomeObject> someObjects) {
this.setSomeObjects(someObjects);
}
public SomeObjects() {
}
public SortedSet<SomeObject> getSomeObjects() {
return someObjects;
}
public void setSomeObjects(SortedSet<SomeObject> someObjects) {
this.someObjects = someObjects;
}
}
很抱歉代码垃圾邮件,但我希望完整,我无法自己跟踪问题。如果我得到答案,我将编辑并修剪不重要的代码。