Gói này không tồn tại khi câu trả lời này ban đầu được chấp nhận. Câu trả lời ban đầu được cung cấp cho bối cảnh lịch sử dưới đây:
Bạn có thể làm điều đó bằng cách tạo một giao diện:
interface IFileSystem {
bool FileExists(string fileName);
DateTime GetCreationDate(string fileName);
}
và tạo một triển khai 'thực' sử dụng System.IO.File.Exists (), v.v. Sau đó, bạn có thể mô phỏng giao diện này bằng khung mô phỏng; Tôi đề nghị Moq .
Chỉnh sửa: ai đó đã làm điều này và vui lòng đăng nó trực tuyến ở đây .
Tôi đã sử dụng phương pháp này để mô phỏng DateTime.UtcNow trong giao diện IClock (thực sự rất hữu ích cho thử nghiệm của chúng tôi để có thể kiểm soát dòng thời gian!), Và theo truyền thống hơn, giao diện ISqlDataAccess.
Một cách tiếp cận khác có thể là sử dụng TypeMock , điều này cho phép bạn chặn các cuộc gọi đến các lớp và loại bỏ chúng. Tuy nhiên, điều này sẽ tốn tiền và cần phải được cài đặt trên PC của cả nhóm và máy chủ xây dựng của bạn để chạy, ngoài ra, nó dường như sẽ không hoạt động cho System.IO.File, vì nó không thể làm hỏng mscorlib .
Bạn cũng có thể chấp nhận rằng các phương thức nhất định không thể kiểm tra được đơn vị và kiểm tra chúng trong bộ kiểm tra tích hợp / hệ thống chạy chậm riêng biệt.