【发布时间】:2018-05-04 13:48:35
【问题描述】:
我是 Mockito 的新手,我对 thenReturn 方法有疑问。我已经阅读了这种解决方案运行良好的教程,但在我的程序中,与上述示例相比肯定存在任何不一致之处。
@RunWith(MockitoJUnitRunner.class)
@WebMvcTest(value = MovieRestApiController.class, secure = false)
public class MovieRestApiControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private MovieService movieService;
private ArrayList<Movie> moviesMock;
@Before
public void setUp() {
moviesMock = new ArrayList<>(Arrays.asList(new Movie("Top Gun", "Akcja", "Tony Scott", 15000000, 110)));
}
String exampleMovieJson = "{\"title\":\"Top Gun\",\"director\":\"Tony Scott\",\"runtime\":\"110\":\"budget\":\"15000000\":\"genre:\":\"Akcja\"}";
@Test
public void retrieveDetailsForMovie() throws Exception {
//THIS FUNCTION CAUSE NULL POINTER EXCEPTION
Mockito.when(
movieService.findMovies(Mockito.anyString(), Mockito.anyString())).thenReturn(moviesMock);
RequestBuilder requestBuilder = MockMvcRequestBuilders.get(
"/find-movie").accept(
MediaType.APPLICATION_JSON);
MvcResult result = mockMvc.perform(requestBuilder).andReturn();
System.out.println(result.getResponse());
String expected = "{title:Top Gun,director:Tony Scott,runtime:110,budget:15000000,genre:Akcja}";
JSONAssert.assertEquals(expected, result.getResponse()
.getContentAsString(), false);
}
}
【问题讨论】:
-
你在课堂上使用
@RunWith(MockitoJUnitRunner.class)注解吗? -
stackoverflow.com/questions/44200720/…。在代码中初始化模拟或使用 .MockitoJUnitRunner 运行
-
我使用@RunWith(SpringJUnit4ClassRunner.class)
-
这意味着你的模拟对象永远不会被初始化,因此仍然是
null。因此,NullPointerException. -
我已经添加了注释,但我仍然遇到同样的问题。
标签: java unit-testing testing nullpointerexception mockito