Özel sorunuzu cevaplamak için: Hayır, dosya G / Ç çağrılarıyla (benim bildiğim) alay etmenize izin verecek kitaplık yok. Bu, türlerinizin "düzgün" birim testlerinin türlerinizi tanımlarken bu kısıtlamayı dikkate almanızı gerektireceği anlamına gelir.
"Uygun" bir birim testini nasıl tanımladığımla ilgili kısa yan not. Birim testlerinin, bilinen girdiler sağlanan beklenen çıktıyı (bir istisna, bir yöntem çağrısı vb.) Aldığınızı doğrulaması gerektiğine inanıyorum. Bu, birim test koşullarınızı bir dizi giriş ve / veya giriş durumu olarak ayarlamanıza olanak tanır. Bunu yapmanın en iyi yolu, arayüz tabanlı hizmetler ve bağımlılık enjeksiyonu kullanmaktır, böylece bir türe ait her bir sorumluluk, bir yapıcı veya özellik aracılığıyla iletilen bir arabirim aracılığıyla sağlanır.
Yani, bunu akılda tutarak, sorunuza geri dönelim. Mscorlib dosya sistemi yöntemleri üzerinde basitçe bir cephe IFileSystemService
olan bir FileSystemService
uygulama ile birlikte bir arayüz oluşturarak dosya sistemi çağrılarıyla dalga geçtim . IFileSystemService
Kodum daha sonra mscorlib türleri yerine kullanıyor . Bu FileSystemService
, uygulama çalışırken benim standardımı takmama veya IFileSystemService
birim testlerimde alay etmeme izin veriyor . Uygulama kodu, nasıl çalıştırıldığına bakılmaksızın aynıdır, ancak temel altyapı bu kodun kolayca test edilmesini sağlar.
Mscorlib dosya sistemi nesneleri etrafında sarmalayıcı kullanmanın bir acı olduğunu kabul edeceğim, ancak bu özel senaryolarda, test çok daha kolay ve daha güvenilir hale geldiğinden ekstra çalışmaya değer.