1

単体テストでの動作を置き換えたいのですが、アセンブリのEnvironment.GetFolderPathモルを生成した後SystemSystem.Molesアセンブリに type の定義が含まれていませんMEnvironment

4

1 に答える 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 に答える