Untuk menjawab pertanyaan spesifik Anda: Tidak, tidak ada perpustakaan yang akan memungkinkan Anda untuk mengejek panggilan file I / O (yang saya tahu). Ini berarti bahwa unit "yang benar" yang menguji tipe Anda akan mengharuskan Anda mempertimbangkan batasan ini saat menentukan tipe Anda.
Catatan samping cepat tentang cara saya mendefinisikan unit test "tepat". Saya percaya bahwa unit test harus mengkonfirmasi bahwa Anda mendapatkan output yang diharapkan (baik pengecualian, memanggil metode, dll) memberikan input yang dikenal. Ini memungkinkan Anda untuk mengatur kondisi pengujian unit Anda sebagai serangkaian input dan / atau status input. Cara terbaik yang saya temukan untuk melakukan ini adalah menggunakan layanan berbasis antarmuka dan injeksi ketergantungan sehingga setiap tanggung jawab eksternal untuk suatu tipe diberikan melalui antarmuka yang dilewatkan melalui konstruktor atau properti.
Jadi, dengan mengingat hal ini, kembalilah ke pertanyaan Anda. Saya telah mengejek panggilan sistem file dengan membuat IFileSystemService
antarmuka bersama dengan FileSystemService
implementasi yang hanya fasad atas metode sistem file mscorlib. Kode saya kemudian menggunakan jenis IFileSystemService
daripada mscorlib. Ini memungkinkan saya untuk memasukkan standar saya FileSystemService
ketika aplikasi sedang berjalan atau mengejek IFileSystemService
dalam unit test saya. Kode aplikasinya sama terlepas dari bagaimana dijalankannya, tetapi infrastruktur yang mendasarinya memungkinkan kode itu untuk dengan mudah diuji.
Saya akan mengakui bahwa itu adalah rasa sakit untuk menggunakan pembungkus di sekitar objek sistem file mscorlib tetapi, dalam skenario khusus ini, layak untuk bekerja ekstra karena pengujian menjadi jauh lebih mudah dan lebih dapat diandalkan.