Tôi đang cố gắng sử dụng OCMock để thử nghiệm ứng dụng của mình. Nhưng tôi bối rối nơi chúng ta nên sử dụng mong đợi và nơi để sử dụng sơ khai? Ai có thể giúp tôi không?Sự khác biệt trong phương pháp OCMock mong đợi và sơ khai là gì?
Trả lời
Sự khác biệt cơ bản là thế này: bạn expect
điều mà phải xảy ra, và stub
điều mà thể xảy ra.
Có 2 cách giả lập đối tượng thất bại: phương thức không mong muốn/không được đặt trước được gọi hoặc phương thức dự kiến không được gọi.
- Số bất ngờ invocations. Khi một đối tượng giả nhận được một thông báo chưa được đặt hoặc được dự kiến, nó sẽ ném một ngoại lệ ngay lập tức và thử nghiệm của bạn không thành công.
- Dự kiến lời gọi. Khi bạn gọi
verify
trên mô hình của bạn (thường là vào cuối thử nghiệm của bạn), nó sẽ kiểm tra để đảm bảo tất cả các phương pháp bạn mong đợi thực sự được gọi. Nếu không có, thử nghiệm của bạn sẽ thất bại.
Có một vài loại mocks thay đổi hành vi này: mocks đẹp và một phần mocks. Mocks đẹp ngăn cản bạn có phương pháp khai thác - về cơ bản họ cho phép invocations bất ngờ xảy ra. Một phần mocks là một cách để chặn các tin nhắn được gửi đến các đối tượng thực tế. Bất kỳ thư nào bạn mong đợi hoặc khai thác trên một mô hình một phần sẽ được gửi đến đối tượng giả. Tất cả các tin nhắn khác được gửi đến đối tượng thực tế. Đối với cả hai mocks đẹp và mocks một phần, bạn sẽ không nhận được một thất bại thử nghiệm trên bất ngờ invocations (quy tắC# 1 ở trên).
- 1. Sự khác biệt giữa giả lập, sơ khai, và cô gái nhà máy là gì?
- 2. Trong RSpec, sự khác biệt giữa cuống! và sơ khai?
- 3. sự khác biệt giữa phương pháp ngủ và phương pháp năng suất đa luồng là gì?
- 4. Sự khác biệt giữa "hàng đợi toàn cầu" và "hàng đợi chính" trong GCD là gì?
- 5. Trong C++, sự khác biệt giữa một phương pháp và một chức năng là những gì
- 6. Sự khác biệt giữa các phương pháp sao chép và sao chép của Ruby là gì?
- 7. DTO và BO là gì? Sự khác biệt là gì?
- 8. Sự khác nhau giữa phương pháp tĩnh và phương pháp không tĩnh là gì?
- 9. Sự khác biệt về Sơ đồ thành phần và Sơ đồ triển khai?
- 10. Sự khác nhau giữa phương pháp BeanPostProcessor và init/destroy trong Spring là gì?
- 11. Sự khác biệt giữa GetHashCode được triển khai trong lớp Object và ValueType là gì?
- 12. Sự khác biệt giữa '&' và ',' trong Generics Java là gì?
- 13. Sự khác nhau giữa phương pháp rút KineticJS là gì?
- 14. Sự khác biệt giữa localname và qname là gì?
- 15. Sự khác biệt giữa is_a và instanceof là gì?
- 16. Trong Ember.js, sự khác biệt giữa [] và Ember.A ([]) là gì?
- 17. Sự khác biệt giữa while (true) và loop là gì?
- 18. Sự khác biệt giữa Khai thác thông tin và Khai thác văn bản là gì?
- 19. Sự khác biệt giữa "gọi" và "gọi" là gì?
- 20. Sự khác biệt giữa ascx và .cshtml là gì?
- 21. Sự khác biệt giữa móc và gọi lại là gì?
- 22. Sự khác biệt trong các phương pháp này của quá tải Nhà khai thác trong C++
- 23. System.Globalization là gì và sự khác biệt giữa nó và nội địa hóa là những gì
- 24. Sự khác biệt giữa "new A()" và "A.newInstance()" là gì?
- 25. Sự khác biệt giữa & và && trong MATLAB là gì?
- 26. Sự khác biệt giữa phương thức getRequestURI và getPathInfo trong HttpServletRequest là gì?
- 27. Sự khác nhau giữa hàng đợi toàn cầu và hàng đợi của người dùng là gì?
- 28. Sự khác biệt giữa ba phương pháp phân tích độ bao phủ mã là gì?
- 29. Sự khác biệt giữa "1.0f" và "1.f" là gì?
- 30. Sự khác biệt giữa dealloc và viewdidunload là gì?