【发布时间】:2017-06-17 16:20:57
【问题描述】:
我是 Mockito 框架的新手,我想我明白了,但不知何故实施它似乎不起作用。
public class Rental {
private int daysRented;
private Movie movie;
public Movie getMovie() {
return movie;
}
public void setMovie(Movie movie) {
if (movie.equals(null)) {
throw new RuntimeException("Can not set a Movie to Rental");
}
this.movie = movie;
}
public int getDaysRented() {
return daysRented;
}
}
在这里我想测试 setMovie() 方法。 所以我想通过模拟来测试,只要你给 setter 一个 Movie null 参数就会抛出一个异常......所以这是我的尝试......
@Test(expected = RuntimeException.class)
public void letSetMovieFailByNullMovie() {
Rental rental = new Rental();
Movie mockedMovie = mock(Movie.class);
doThrow(new RuntimeException()).when(rental).setMovie(mockedMovie);
rental.setMovie(mockedMovie);
//mockedMovie should somehow be null here...
}
所以我的问题是: 我想检查是否由于 null Movie 引发了异常。但是,如果我无法初始化 null-Movie,我应该如何在这种情况下使用模拟?
【问题讨论】:
-
你在做什么?你应该总是嘲笑 Collaborators 而不是 SUT。只需将
null传递给setMovice方法即可。
标签: java unit-testing junit mocking mockito