Chuyên mục

Backend

APIs, databases and distributed systems.

99 Ngày Spring — Ngày 56: Mock bean & test security

@MockitoBean chỉ cho thứ ngoài biên giới và mỗi bộ mock khác nhau là một context mới, @WithMockUser với bẫy roles và authorities, jwt() test luật phân quyền mà không cần token thật — và kim tự tháp test cho security.

21 thg 9, 202611 phút3
99 Ngày Java — Ngày 56: Terminal operations

Năm họ phép kết thúc nhận ra bằng kiểu trả về, stream chỉ dùng một lần, reduce với identity trung hòa và collect cho container, toList() không sửa được — và vì sao allMatch trả true trên tập rỗng còn findAny không hứa trả phần tử đầu.

21 thg 9, 202610 phút3
99 Ngày Spring — Ngày 55: Testcontainers

Phụ thuộc thật trong Docker thay vì thứ gần giống, @ServiceConnection biến sáu dòng cấu hình thành một annotation, một container cho cả bộ test — và bức tranh khép lại năm ngày kiểm thử.

20 thg 9, 20268 phút10
99 Ngày Java — Ngày 55: Intermediate operations

Phân biệt map và flatMap bằng kiểu trả về, distinct im lặng không lọc gì nếu thiếu equals, sorted phá vỡ tính lười, peek không được đảm bảo chạy — và vì sao skip không phải cách phân trang dữ liệu từ database.

20 thg 9, 20268 phút6
99 Ngày Spring — Ngày 54: @SpringBootTest

Khi nào test tích hợp mới xứng đáng, vì sao RANDOM_PORT là lựa chọn đúng, cache context quyết định bộ test chạy hai phút hay bốn mươi phút — và vì sao @WithMockUser hoàn toàn vô nghĩa ở đây.

19 thg 9, 20268 phút6
99 Ngày Java — Ngày 54: Stream API nhập môn

Dây chuyền ba phần và luật không có phép kết thúc thì không chạy gì, tính lười cho ngắt sớm và dữ liệu vô hạn, vì sao lọc trước sắp sau nhanh hơn hàng chục lần — và khi nào vòng lặp vẫn thắng.

19 thg 9, 20268 phút6
99 Ngày Spring — Ngày 53: @DataJpaTest

Mỗi test là một transaction bị rollback, flush và clear quyết định test có chứng minh được gì không, vì sao "xanh trên H2 chết trên production" làm cả đội mất niềm tin — và Testcontainers với @ServiceConnection.

18 thg 9, 20268 phút6
99 Ngày Java — Ngày 53: Method reference

Bốn loại và loại thứ ba hay nhầm nhất, khi nào method reference dễ đọc hơn lambda và khi nào không, cái bẫy NPE nổ ngay lúc tạo reference — cùng nơi nó đáng giá nhất: Comparator và groupingBy.

18 thg 9, 20267 phút5
99 Ngày Spring — Ngày 52: @WebMvcTest & MockMvc

Slice test nạp đúng tầng web nên mọi service phải khai @MockitoBean, MockMvc gọi thẳng DispatcherServlet không cần server, đây là nơi duy nhất chứng minh @Valid và @ControllerAdvice thật sự chạy — cùng cái bẫy 401 khiến nhiều người bỏ cuộc.

17 thg 9, 20267 phút7