maybe someone can tell me why I always get NullPointerException when testing my Controller. It tells me that the NullPointerException happens here:
mvc.perform(get("/passwordaenderung"))
Here is my code:
public class LagerstandortControllerTest {
@InjectMocks
private PasswordChange passwordChange;
// add @Mock annotated members for all dependencies used by the controller here
private MockMvc mvc;
// add your tests here using mvc.perform()
@Test
public void getHealthStatus() throws Exception {
mvc.perform(get("/passwordaenderung"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.status", is("OK")));
}
@Before
public void createControllerWithMocks() {
MockitoAnnotations.initMocks(this);
MockMvcBuilders.standaloneSetup(new PasswordChange()).build();
}
}
What I want to achieve is to test my controller without loading the whole ApplicationContext.
I had to adapt it in order to avoid a NullPointerException:
Introduced a new class:
public class StandaloneMvcTestViewResolver extends InternalResourceViewResolver {
public StandaloneMvcTestViewResolver() {
super();
}
@Override
protected AbstractUrlBasedView buildView(final String viewName) throws Exception {
final InternalResourceView view = (InternalResourceView) super.buildView(viewName);
// prevent checking for circular view paths
view.setPreventDispatchLoop(false);
return view;
}
}
And in my setup method:
@Before
public void setUp() {
final MainController controller = new MainController();
mvc = MockMvcBuilders.standaloneSetup(controller)
.setViewResolvers(new StandaloneMvcTestViewResolver())
.build();
}
The only problem is now that I get a 404 error.
Do I have to put my index.html in
/src/test/resources
too?