Тестовый пример JUnit не определяет метод в контроллере - PullRequest
0 голосов
/ 15 февраля 2019

Новинка для весенней загрузки.

API в контроллере выглядит так,

@RestController("/path1/path2")
public class SomeController
{

@GetMapping("/path3/path4")
public String doSomething()
{
//code goes here
}

}

Тестовый пример выглядит,

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = 
xxx.class)
@AutoConfigureMockMvc(secure = false)
public class AuthServiceTestCase
{

@Autowired
private MockMvc mock;

@Test
public void testDoSomething()
{

//Command 1
mock.perform(get("/path1/path2/path3/path4")).andExpect(status().isOK()); 

//Command 2
 mock.perform(get("/path3/path4")).andExpect(status().isOK()); 

}

}

Теперь, после запуска тестового примера (Команда 1), я получил следующее

"java.lang.AssertionError: Ожидаемое состояние: <200>, но было: <404>"

Но «Команда 2» сработала, как и ожидалось.

Мой вопрос:

Путь к префиксу RestController + Путь к префиксу контроллера = Весь путь.

Для вызова API, мы должны следовать приведенному выше формату, но почему Junit дает сбой, если следует тот же материал?

Может ли кто-нибудь сбросить здесь некоторые входные данные?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019
@RestController
@RequestMapping("/path1/path2")
public class SomeController
{

@GetMapping("/path3/path4")
public String doSomething()
{
//code goes here
}

}

Проблема не в вашем тестовом классе.Проблема заключается в неправильном использовании requestMapping.

0 голосов
/ 15 февраля 2019

В вашем случае /path1/path2 - это имя компонента контроллера.Чтобы добавить общий префиксный путь для всех методов внутри контроллера, вы можете поместить

@RequestMapping("/path1/path2")

на свой контроллер.

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