2012-06-19 29 views

Trả lời

13

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.

  1. 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.
  2. 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).

Các vấn đề liên quan