web-dev-qa-db-ja.com

RhinoMocksを使用して、空のコンストラクターなしで具象クラスをどのようにモックまたはスタブしますか?

Rhino Mocksを使用して具象クラスをモックすることは、クラスに空のコンストラクターがある場合、非常に簡単に機能するようです。

public class MyClass{
     public MyClass() {}
}

しかし、パラメーターを受け取るコンストラクターを追加し、パラメーターを受け取らないコンストラクターを削除すると、次のようになります。

public class MyClass{
     public MyClass(MyOtherClass instance) {}
}

私は例外を得る傾向があります:

System.MissingMethodException:引数が一致するコンストラクターが見つかりません

モックまたはスタブの呼び出しにnullを入れようとしましたが、機能しません。

パラメータのないコンストラクタを欠く具象クラスのモックとスタブを作成できますか?

28
Mark Rogers

うん。 StrictMock()呼び出しでパラメータを渡すだけです。

// New FruitBasket that can hold 50 fruits.
MockRepository mocks = new MockRepository();
FruitBasket basket = mocks.StrictMock<FruitBasket>(50);
32
John Feminella

空の/デフォルトのコンストラクターなしで具象クラスをモックする場合、RhinoMocksは他の利用可能なコンストラクターを使用する必要があります。 Rhinoでは、空でないコンストラクターのパラメーターを指定する必要があります。それ以外の方法でパラメーターを作成する方法がわからないためです。

私の間違いは、CreateMockまたはGenerateMock呼び出しにnullを渡そうとしていたことです。コンストラクターの非nullパラメーターを生成するとすぐに、モックまたはスタブを作成するための呼び出しが始まりました。ワーキング。

3
Mark Rogers

パラメータ配列を引数として取るDynamicMock<T>ステートメントの後にそれらを渡す必要があります。残念ながら、型チェックはありませんが、引数を署名に一致させると、適切なコンストラクターが呼び出されます。

例えば:

var myMock = MockRepository.DynamicMock<MyClassWithVirtuals>(int x, myObj y);
1
womp