2010-07-08 25 views
9

Như một số bạn sẽ biết, thường không thể giả lập một phương thức tĩnh trong .net.Làm thế nào để "Typemock Isolator" giả lập các phương pháp tĩnh?

Bằng cách mô phỏng, tôi muốn thay thế một phương thức trong một lớp bằng một phương thức khác có cùng chữ ký, thường là cho mục đích thử nghiệm.

Hai phương pháp chính được sử dụng để mô phỏng phương thức là khai báo nó ảo hoặc xác định nó trong giao diện. Cả hai loại này đều không được phép sử dụng các phương thức tĩnh .net.

Tuy nhiên, có một công cụ đắt tiền gọi là "Typemock Isolator" cho phép mô phỏng các phương pháp tĩnh. Làm thế nào để Isolator thực hiện được điều này dường như không thể?

Trả lời

8

Đó là trong số FAQ. Về cơ bản, một giả Typemock khởi tạo một đối tượng mới của kiểu gốc và móc vào mỗi và mọi phương thức và cuộc gọi thuộc tính cho đối tượng đó, chuyển hướng cuộc gọi tới giả mạo và trả về các giá trị bạn chỉ định. Nó sử dụng một số voodoo sâu trong .NET Framework (các .NET Profiler API, nếu bạn quan tâm) để làm điều này, nhưng đó là tất cả "VN". Về mặt kỹ thuật, bất cứ ai cũng có thể xây dựng một bản sao của Typemock, nhưng tôi vẫn chưa thấy.

+0

Nó nói trên trang web, "Typemock Isolator sử dụng công nghệ hướng-khía cạnh để chuyển hướng cuộc gọi từ mã thực. Điều này cho phép các nhà phát triển xác định hành vi của thành phần bên ngoài cần thiết cho một kịch bản thử nghiệm." Tôi đã hy vọng có thể biết thêm về điều đó xảy ra như thế nào. Tôi đã nghe nói về các công cụ "hậu biên dịch" theo hướng Aspect như PostSharp. –

+0

@Rising Star: Rất tiếc, tôi đã chỉnh sửa để thêm thông tin. PostSharp thực sự sửa đổi mã đã biên dịch. Typemock sử dụng .NET Profiler API để thực sự chặn các cuộc gọi phương thức * khi chúng được gọi là * và chuyển hướng chúng đến giả. – Randolpho

+0

CHẤP NHẬN: .net profiler api. Nó có nói ở đâu đó trên trang web của họ rằng họ sử dụng api profiler .net hay bạn có biết cách nào khác không? –

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