基本的にはこんな状態です。私は次のものを持っています:
public IService Service { get; set; } //Set to MyMockedService class.
public Boolean DoFoo()
{
//possible other ways of returning true/false...
Boolean success = true;
//Get FileInfo[] items
foreach (var item in items)
DoOtherFoo(item);
}
public Boolean DoOtherFoo(FileInfo fileInfo)
{
String filepath = //manipulate fileInfo.FullName;
Byte[] file = Service.GetFile(filepath)
try
{
WriteBinaryFile(filepath, file); //How can I force file writing to throw an exception
}
catch (Exception)
{
return false;
}
}
基本的に、DoFoo() のテストでは、true/false を返すパスがたくさんあります。最後のファイルを除いてすべてのユニットをテストしました...ファイルを書き込もうとし、何らかの理由でファイルの1つでも書き込めない場合、失敗してfalseを返します。最初は、「bad*file」などの不適切なファイル名を設定しようとすると、WriteFile で例外がスローされると考えましたが、不正な文字を使用して FileInfo オブジェクトを作成できないため、そこまで到達しませんでした。だから私はそれを作成する別の方法を探しているので、ファイルを書き込むことが不可能になり、偽を取り戻すことができます。