为什么TestRestTemplate postForEntity对象体为null

时间:2017-02-19 17:30:30

标签: java rest spring-boot

所以我的问题基本上是这样的: 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;
    }
}

很抱歉代码垃圾邮件,但我希望完整,我无法自己跟踪问题。如果我得到答案,我将编辑并修剪不重要的代码。

0 个答案:

没有答案