Có thể đây là câu hỏi mới nhưng không thể tìm thấy câu trả lời.Mockito: Phương pháp Stub với đối tượng phức tạp làm tham số
Tôi cần phải khai báo phương thức với Mockito. Nếu phương thức có đối số "đơn giản", thì tôi có thể làm điều đó. Ví dụ: phương pháp tìm với hai tham số, màu ô tô và số cửa:
when(carFinderMock.find(eq(Color.RED),anyInt())).thenReturn(Car1);
when(carFinderMock.find(eq(Color.BLUE),anyInt())).thenReturn(Car2);
when(carFinderMock.find(eq(Color.GREEN), eq(5))).thenReturn(Car3);
Vấn đề là đối số tìm là đối tượng phức tạp.
mappingFilter = new MappingFilter();
mappingFilter.setColor(eq(Color.RED));
mappingFilter.setDoorNumber(anyInt());
when(carFinderMock.find(mappingFilter)).thenReturn(Car1);
Mã này không hoạt động. Lỗi là "Sử dụng đối sánh đối sánh không hợp lệ! 1 đối sánh dự kiến, 2 được ghi lại".
Không thể sửa đổi phương thức "tìm", nó cần phải là tham số MappingFilter.
Tôi giả sử rằng tôi phải làm "điều gì đó" để chỉ ra Mockito rằng khi ánh xạFilter.getColor là RED và ánh xạFilter.getDoorNumber là bất kỳ, thì nó phải trả lại Car1 (và giống nhau cho hai câu còn lại). Nhưng làm thế nào?
Tuyệt vời, hoạt động hoàn hảo: D –