単体テストでの動作を置き換えたいのですが、アセンブリのEnvironment.GetFolderPath
モルを生成した後System
、System.Moles
アセンブリに type の定義が含まれていませんMEnvironment
。
1 に答える
0
インターフェイス型でスタブを試しましたか? サブルーチンは、コンストラクター インジェクションまたはメソッド入力パラメーターを介して渡すことができます。たとえば、GetFolderPath メソッドを含むインターフェイス IEnvironment を作成します。これを行う方法をすでに知っている場合は、自由に進んでください。それ以外の場合、Environment クラスでスタブする方法を次に示します。(これは携帯電話で入力しているので、ご容赦ください;)
public interface IEnvironment
{
string GetFolderPath(Environment.SpecialFolder folder);
}
次に、スタブを作成します。
public class MyEnvironment : Environment, IEnvironment
{
public string GetFolderPath(Environment.SpecialFolder folder)
{
return base.GetFolderPath(folder);
}
}
スタブをメソッドまたはクラス コンストラクターにパラメーターとして渡します。
public void MyMethod(IEnvironment env)
{
var path = env.GetFolderPath():
}
テスト用に、モック タイプまたは Mole MyEnvironment.GetGolderPath を作成します。パフォーマンス上の理由から、モールド型よりもモックを作成することをお勧めします。モックは、moled 型と同様に、基本メソッドを呼び出す代わりに値を返すだけです。いずれにせよ、彼のスタブは必要なので、他のテストで再利用できるので、モックを作成することもできます。
于 2011-08-18T06:28:45.443 に答える