• Để tiến hành test Controller trong SpringBoot trước hết ta phải thêm thư viện spring-boot-starter-test, spring-security-test, spring-boot-starter-web, spring-security-test

  • Cấu hình file SecurityConfig

  • Tiến hành test controller với @SpringBootTest như sau

Đầu tiên tạo một file có tên là ExamControllerTest:

Sau khi tạo xong class trên, ta thêm các mock object vào trong class như hình dưới đây:

  • Bây giờ ta sẽ tiến hành viết đoạn test đầu tiên với phương thức findAll() trong ExamController, ở đoạn code bên dưới thì mình sử dụng phương thức mvc.perform() cho việc test, với phương thức này thì các bạn có thể so sánh kết quả mình mong muốn với kết quả thực tế thu được

Trong đoạn test trên sử dụng @WithMockUser có value là admin và roles là Admin sẽ tạo cho ta một mock user có tên là admin có role ADMIN để truy cập đến đoạn url ở trên

  • Sau khi viết đoạn test phương thức findAll trên được pass thì chúng ta tiếp tục tiến hành viết đoạn test với phương thức tạo mới nhưng trước tiên ta phải tạo một phương thức static có tên là asJsonString để chuyển đổi chuỗi sang dạng Json:

  • Sau đó ta tiến hành viết test cho phương thức save như sau:

Đoạn code trên được test với Role là ADMIN nên sẽ được kết quả trả về là 201

  • Test phương thức save với role là User:

Vì role user không có quyền tạo mới Exam nên kết quả trả về mà mình mong muốn sẽ là 403

Author: Nguyễn Minh Quân

Đăng ký nhận bộ tài liệu kỹ năng dành cho lập trình viên (video hướng dẫn + slide) tại đây


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.