1)依存性注入モデルに従った場合、特定の部分の実際の実装を、必要に応じて例外をスローするモックに置き換えることができます。ただし、最初に特定の方法でアプリケーションを設計するか、完全にリエンジニアリングする必要があります。
お気に入り:
public class SqlUsersRepository : IUsersRepository
{
public void RegisterNewUser (User newUser)
{
throw new SqlException ("Connection timeout");
}
}
ただし、ここでは、コンシューマコードが具体的な実装例外の処理に関与してはならないという問題があります。
2)別のアプローチは、特定のメソッド呼び出しをカスタムラッパーに置き換えることです。
の代わりに:
FileStream fs = File.OpenRead (path);
あなたが使う:
FileStream fs = File.OpenRead_Test (path);
カスタム拡張メソッドを提供することにより(簡単なアイデア):
public static FileStream OpenRead_Test (this System.IO.File file, string path)
{
throw new FileNotFoundException ();
}