Trong mockito, `verifyzerinteractions` là một phương thức xác minh chuyên dụng được sử dụng để đảm bảo rằng không có cuộc gọi phương thức nào được thực hiện trên một đối tượng bị chế giễu trong quá trình thử nghiệm. Phương pháp này là rất quan trọng để duy trì độ tinh khiết của các bài kiểm tra đơn vị bằng cách ngăn chặn các tương tác ngoài ý muốn có thể chỉ ra các sai sót trong logic hoặc phụ thuộc không cần thiết.
Sự khác biệt so với các phương thức xác minh khác
1. Mục đích và hành vi:
- `VerifyZerIninterActions`: Phương thức này kiểm tra xem không có cuộc gọi phương thức nào được thực hiện trên một đối tượng bị chế giễu. Nếu bất kỳ cuộc gọi phương thức nào được phát hiện, Mockito ném một ngoại lệ, khiến bài kiểm tra không thành công. Nó được sử dụng để khẳng định rằng một đối tượng giả vẫn chưa được xử lý trong quá trình thực thi thử nghiệm [1] [4].
- `Xác minh`: Phương thức này được sử dụng để xác minh rằng các cuộc gọi phương thức cụ thể xảy ra như mong đợi. Nó cho phép bạn kiểm tra xem một phương thức được gọi với các đối số cụ thể và có thể được sử dụng với các chế độ xác minh khác nhau như `Times ()`, `Ít nhất ()` và `At tối đa ()` để chỉ định số lượng lời mời [2] [7].
2. Chế độ xác minh:
- `VerifyZerInInActions` không hỗ trợ các chế độ xác minh. Nó chỉ đơn giản là kiểm tra sự vắng mặt của bất kỳ tương tác.
- `Xác minh` hỗ trợ nhiều chế độ xác minh, chẳng hạn như` Times () `,` Ít nhất () `,` Atleasonce () `và` At tối đa () `, cho phép bạn chỉ định số lần một phương thức nên được gọi là [2] [7].
3. Lệnh gọi:
- `VerifyZerIninterActions` không liên quan đến thứ tự các cuộc gọi phương thức vì nó không hoàn toàn kiểm tra các tương tác.
- `Xác minh` có thể được sử dụng với` inorder` để xác minh thứ tự của các yêu cầu phương thức trên các đối tượng giả. Điều này rất hữu ích khi chuỗi các cuộc gọi phương thức là quan trọng [2] [7].
4. Các trường hợp sử dụng:
- `VerifyzerIninterActions 'thường được sử dụng khi bạn muốn đảm bảo rằng một đối tượng giả hoàn toàn không được sử dụng trong kịch bản thử nghiệm. Điều này giúp cách ly đơn vị đang thử nghiệm và đảm bảo rằng không có tác dụng phụ nào xảy ra do các tương tác bất ngờ [1] [4].
- `Xác minh` được sử dụng trong các kịch bản trong đó bạn cần xác nhận rằng các tương tác cụ thể xảy ra giữa các đối tượng. Nó là điều cần thiết để kiểm tra hành vi dự kiến của một hệ thống được kiểm tra [2] [7].
5. Mối quan hệ với `VerifyNomoreInterActions`:
- `VerifyzerOnOractions` kiểm tra xem không có tương tác nào xảy ra.
- `VerifyNomoreInterActions` kiểm tra xem tất cả các tương tác trên một đối tượng giả đã được xác minh. Nó đảm bảo rằng không còn tương tác chưa được xác minh sau khi sử dụng `xác minh` cho các cuộc gọi phương thức cụ thể [3] [9].
Tóm lại, `VerifyzerInInactions` là một phương pháp chuyên dụng tập trung vào việc đảm bảo không có tương tác nào xảy ra, trong khi` xác minh` là linh hoạt hơn, cho phép bạn kiểm tra các tương tác cụ thể và tần số của chúng. Cả hai phương pháp đều rất cần thiết trong thử nghiệm đơn vị với Mockito, phục vụ các mục đích khác nhau tùy thuộc vào kịch bản thử nghiệm.
Trích dẫn:[1] https://www.dhiwise.com/post/how-to-use-verifyzerointeractions-for-better-flutter-tests
[2] https://www.dhiwise.com/post/mastering-unit-testing-a-complete-guide-to-mockito-verify
[3] https://stackoverflow.com/questions/52396683/difference-between-verifynomoreinteractions-and-verifyzerointeractions-in-mockit
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.Mockito.verifyZeroInteractions
[5] https://stackoverflow.com/questions/64239160/using-mockito-when-to-mock-and-verify-vs-mockito-verify
[6] https://www.javacodegeeks.com/2015/11/mockito-verification.html
[7] https://www.toptal.com/java/a-guide-to-everyday-mockito
[8] https://www.baeldung.com/mockito-verify
[9] https://www.digitalocean.com/community/tutorials/mockito-verify