我一直在編寫一些REST API測試,我不知道我是否寫錯了我的測試,或者我的POST方法是無效的。 林收到這個錯誤,當我執行測試:當我嘗試通過POST方法創建對象時,爲什麼會得到NullPointerException?
ERROR [2015年12月14日21:37:00309] org.glassfish.grizzly.servlet.ServletHandler:服務異常: ! java.lang.NullPointerException:null ! atResources.ActorResource.postActor(ActorResource.java:31)... etc
我不知道它來自哪裏。在測試中的Actor對象被正確初始化,它都應該工作正常。
這裏是POST方法:
@POST
@UnitOfWork
public Saying postActor(@HeaderParam("actorName") String name, @HeaderParam("actorBirthDate") String birthDate) {
Actor actor = dao.create(new Actor(name,birthDate));
return new Saying("Added : " + actor.toString());
}
這裏是我寫的測試
@Test
public void postActor() {
when(movieDAO.create(actor)).thenReturn(actor);
final Response response = RULE.getJerseyTest().target("/actors").request().post(Entity.text(""));
assertThat(response.getStatusInfo().getStatusCode()).isEqualTo(Response.Status.OK.getStatusCode());
verify(movieDAO).create(actor);
}
編輯 Here`s演員初始化方法
@Before
public void setup() {
actor = new Actor();
actor.setId(1L);
actor.setBirthDate("12-03-2014");
actor.setName("Karol Marks");
}
和演員類
@Entity
@Table(name="Actors")
public class Actor {
private long id;
private String name;
private String birthDate;
private Movie movie;
public Actor() {
}
public Actor(String name, String birthDate) {
this.name = name;
this.birthDate = birthDate;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column(name = "name", nullable = false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "birthDate", nullable = false)
public String getBirthDate() {
return birthDate;
}
public void setBirthDate(String birthDate) {
this.birthDate = birthDate;
}
@ManyToOne(cascade = CascadeType.ALL)
public Movie getMovie() {
return movie;
}
public void setMovie(Movie movie) {
this.movie = movie;
}
@Override
public String toString() {
return "Actor{" +
"id=" + id +
", name='" + name + '\'' +
", birthDate='" + birthDate + '\'' +
'}';
}
I've加入了一些男主角的細節,我填寫所有被要求「的toString()」方法 – VanDavv
的字段,因爲它是在資源 – VanDavv