Контроллер Mockmvc создает исключение NullPointerException - PullRequest
0 голосов
/ 28 октября 2018

Может быть, кто-то может сказать мне, почему я всегда получаю исключение NullPointerException при тестировании моего контроллера. Это говорит мне, что NullPointerException происходит здесь:

mvc.perform(get("/passwordaenderung"))

Вот мой код:

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();
}
}

Чего я хочу добиться, так это протестировать мой контроллер без загрузки всего ApplicationContext.


Мне пришлось адаптировать его, чтобы избежать исключения NullPointerException:

Введен новый класс:

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;
}

}

И в моем методе настройки:

@Before
public void setUp() {
    final MainController controller = new MainController();

    mvc = MockMvcBuilders.standaloneSetup(controller)
                    .setViewResolvers(new StandaloneMvcTestViewResolver())
                    .build();
}

Единственная проблема теперь, когда я получаю ошибку 404.

Должен ли я поместить свой index.html в

/src/test/resources

тоже

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...