私は単体テストの作成を支援するために JustMock を使用していますが、かなり単純だと思っていたものにたどり着きましたが、答えが見つかりません。コードを投稿することはできませんが、できる限り説明しようと思います。私がやろうとしていることを示す例を思いつきました。Class2 の CloseConnection メソッドを呼び出さずに、Class1 の Close メソッドをテストしたいと考えています。Class2 の CloseConnection のインスタンスで Mock.Arrange を使用してみましたが、アレンジするインスタンスに固有のものだと思います。単体テストとモック (サンプル コードの下のモック コード) をセットアップした後、Class1 の Close メソッド内でデバッグします。Class2 の依存関係が Class1 のコンストラクター内で作成され、アクセス権がないため、Class2 から CloseConnection メソッドを呼び出します。それに直接。
public class Class1
{
private Class2 instanceOfClass2;
public Class1()
{
instanceOfClass2 = new Class2();
}
public void Close()
{
// other code here
instanceOfClass2.CloseConnection(true);
}
}
public class Class2
{
public void CloseConnection(bool persist)
{
// Method I don't want executed
}
}
Class1 の Close メソッドをテストし、JustMock を使用して Class2 の CloseConnection メソッドの呼び出しを無視する方法を知っている人はいますか?
私が試してみました:
Mock.Arrange(() => instanceOfClass2.CloseConnection(persist)).DoNothing();
モック化されたおよびモック化されていない class2 インスタンスとさまざまな引数 (つまり、Arg.IsAny()) とともに、このメソッド呼び出しの発生を防ぐことはできません。
コードのリファクタリングは私にとってオプションではないため、依存関係を注入するように変更することはできません。justmock を使用したコンストラクターのモックについて読みましたが、Class1 が使用する別のコンストラクターを作成する代わりに、コンストラクターを無視しているようです。 Class2にアクセスできるようにします。
何か案は?
更新 1: Telerik が私に戻ってきて、.IgnoreInstance() を使用してみるように言いましたが、それでも CloseConnection の呼び出しは妨げられませんでした。Telerik からの別の応答を待っています。