Paket ini tidak ada ketika jawaban ini awalnya diterima. Jawaban asli diberikan untuk konteks historis di bawah ini:
Anda bisa melakukannya dengan membuat antarmuka:
interface IFileSystem {
bool FileExists(string fileName);
DateTime GetCreationDate(string fileName);
}
dan membuat implementasi 'nyata' yang menggunakan System.IO.File.Exists () dll. Anda kemudian dapat mengejek antarmuka ini menggunakan kerangka kerja mengejek; Saya merekomendasikan Moq .
Sunting: seseorang melakukan ini dan silakan mempostingnya secara online di sini .
Saya telah menggunakan pendekatan ini untuk mengejek DateTime.UtcNow di antarmuka IClock (benar-benar sangat berguna untuk pengujian kami untuk dapat mengontrol aliran waktu!), Dan lebih tradisional, antarmuka ISqlDataAccess.
Pendekatan lain mungkin menggunakan TypeMock , ini memungkinkan Anda untuk mencegat panggilan ke kelas dan mematikannya. Namun ini membutuhkan biaya, dan perlu diinstal pada PC seluruh tim Anda dan server build Anda untuk dapat berjalan, juga, tampaknya tidak akan bekerja untuk System.IO.File, karena tidak dapat mematikan mscorlib .
Anda juga bisa hanya menerima bahwa metode tertentu tidak dapat diuji unit dan mengujinya dalam suite tes integrasi / sistem yang berjalan lambat terpisah.