我是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()方法。 所以我想通过模拟来测试,一旦你将一个Movie null参数提供给setter,就会抛出异常...所以这是我的尝试...
@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...
}
所以我的问题是: 我想检查是否由于空Movie而抛出异常。但是,如果我无法初始化null-Movie,我应该如何在这种情况下使用模拟?
答案 0 :(得分:0)
在这种情况下不需要使用Mockito,只需使用null参数调用此方法就足够了。像那样:
@Test(expected = RuntimeException.class)
public void letSetMovieFailByNullMovie() {
Rental rental = new Rental();
Movie nullMovie = null;
rental.setMovie(nullMovie);
}
在您的代码中,您确实在测试mockito是否正常工作,因为未调用Rental类代码,而不是因为doThrow(..)...
而抛出异常。