![](/img/trans.png)
[英]java.lang.AssertionError: Status expected:<200> but was:<404>
[英]@RequestMapping java.lang.AssertionError: Status Expected :200 Actual :404
在類外使用@RequestMapping 注釋的斷言錯誤
我收到此錯誤消息:
java.lang.AssertionError: Status
Expected :200
Actual :404
我的控制器是這樣的
@Service
@RestController
@RequestMapping("/execute/files")
@ResponseBody
public class ControllerFiles {
@Autowired
@Qualifier("fileRunner")
ProcessRunnerInterface processRunnerInterfaceFiles;
public InputState executeRestFile(@RequestParam String name) throws ExecutionFailedException, URISyntaxException {
///code///
}
public List<String>....{
///code///
}
}
我的測試
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class ControllerFilesTest {
@Autowired
private MockMvc mockMvc;
@Autowired
ControllerFiles controllerFiles;
@Test
public void testSpringMvcGetFiles() throws Exception {
this.mockMvc.perform(get("/execute/files").param("name", "Spring Community Files"))
.andDo(print()).andExpect(status().isOk());
}
}
但是當我有這樣的代碼時,測試工作正常!
@Service
@RestController
public class ControllerFiles {
@Autowired
@Qualifier("fileRunner")
ProcessRunnerInterface processRunnerInterfaceFiles;
@RequestMapping("/execute/files")
@ResponseBody
public InputState executeRestFile(@RequestParam String name) throws ExecutionFailedException, URISyntaxException {
///code///
}
public List<String>....{
///code///
}
}
任何想法出了什么問題?
如果您希望將 RestController 中的方法作為請求資源提取,則需要將它們標記為 @RequestMapping。 如果你想在你的第一個 RestController 中將基本請求映射保留在控制器級別,那么你需要執行以下操作:
@RestController
@RequestMapping("my/path")
public class MyController {
@RequestMapping("/")
public InputState myMethod() {
...
}
}
正如文檔中所說:
在上面的例子中,@RequestMapping 用在了很多地方。 第一個用法是在類型(類)級別,它表示此控制器中的所有處理程序方法都與 /appointments 路徑相關。
所以類級別@RequestMapping
僅表示相對。 它不是僅基於公共方法聲明實際資源路徑。 所以你需要像這樣注釋你的方法:
@GetMapping
public InputState executeRestFile(@RequestParam String name) throws Exception {
// omited
}
或者像這樣:
@RequestMapping(method = RequestMethod.GET)
public InputState executeRestFile(@RequestParam String name) throws Exception {
// omited
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.