java - 如何将 JUnit 测试写入我的 Spring-MVC 控制器类?
问题描述
我想为我的UserController
班级编写一个 JUnit 测试(Java 单元),但我不知道该怎么做。
用户控制器:
@RestController
@RequestMapping(CompositeController.ENTRY)
public class UserController {
protected final static String ENTRY = "/demo/v1/composite";
private UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping(path = "/isadmin")
public ResponseEntity<Boolean> checkadmin(@RequestHeader String nickname){
return userService.checkifadmin(nickname);
}
用户服务:
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
@Service
public interface UserService {
ResponseEntity<Boolean> checkifadmin(String nickname);
}
用户服务实现:
public class UserServiceImpl implements UserService {
private final String userBaseAdress = "http://localhost:7777";
private final String userBasePath = "/demo/v1/user";
public ResponseEntity<Boolean> checkifadmin(String nickname) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("nickname", nickname);
HttpEntity<String> entity = new HttpEntity<String>(headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<Boolean> response = restTemplate.exchange(userBaseAdress + userBasePath + "/isadmin",
HttpMethod.GET, entity, Boolean.class);
return response;
}
}
解决方案
您可以使用 Spring 的MockMvc
. 查看详细信息:https ://spring.io/guides/gs/testing-web/
另一个有用的方法是根本不启动服务器,而只测试下面的层,Spring 处理传入的 HTTP 请求并将其交给您的控制器。这样,几乎使用了整个堆栈,并且您的代码将被调用,就好像它正在处理一个真正的 HTTP 请求一样,但没有启动服务器的成本。为此,我们将使用 Spring 的 MockMvc,我们可以通过在测试用例上使用 @AutoConfigureMockMvc 注释来请求为我们注入它:
推荐阅读
- sql - how to use sql statement to process this data?
- c# - 替换出现数值的字符串(1000000)应该是十进制格式,例如(1,000,000.00)
- pyinstaller - 我使用 PySimpleGUI 和 cx_oracle 创建了小型桌面应用程序,并创建了无法在另一台机器上运行的 exe
- javascript - 使用 Vue I18n 和大内容文本 html 的最佳方式
- cmd - FTP 响应 150(文件状态正常;即将打开数据连接)挂起?
- kiwi-tcms - 如何开始使用 Kiwi API?
- excel - 对excel中的行组执行操作
- linux - shell脚本中的算术运算
- fullcalendar - Fullcalendar v4 使用反向背景渲染的背景事件颜色错误
- android - 如何在 Android 上对 PCM 音频文件进行下采样