Tôi có một lớp tĩnh mà kết thúc tốt đẹp một số phương pháp có nguồn gốc từ winspool:Mocking một Class tĩnh
public static class WinSpool
{
[DllImport("winspool.drv")]
public static extern int OpenPrinter(string pPrinterName, out IntPtr phPrinter, IntPtr pDefault);
...
//some more methods here
}
Tôi muốn nhạo báng họ cho kiểm tra đơn vị, nhưng không thể tìm thấy một mô hình cho việc này. (Mọi người có tránh các lớp tĩnh không?)
Tôi thấy thật mỉa mai khi các thành viên tĩnh được "cau mày", khi những gì chúng ta thực sự nên cau mày là các khuôn khổ giả mạo không thể giả lập thành viên tĩnh. Sau khi tất cả, nếu TypeMock có thể làm điều này, tại sao các khuôn khổ OSS không thể làm như vậy? –
Lý do cho điều này là hầu hết các khuôn khổ mocking thực hiện mocks bằng cách sử dụng mẫu Proxy, về cơ bản đòi hỏi thừa kế, và tất nhiên các lớp tĩnh không thể được kế thừa từ đó. Typemock sử dụng một cách tiếp cận hoàn toàn khác, bằng cách chuyển hướng các cuộc gọi phương thức với phép tiêm IL, cho phép nó tạo ra các cuộc gọi tĩnh. – womp
Bởi vì nó là * quá đắt để được phát triển miễn phí * (http://stackoverflow.com/questions/1534119/is-there-any-open-source-mocking-framework-resembling-typemock) – Graviton