単体テストでは、NUnit 2.6とMoq 4.0を使用しています。 Moqのプロキシオブジェクトが(おそらく設計によって)実際の実装へのメソッド呼び出しをリレーしない仮想メンバーに関する特別なケースがあります。例えば、私はクラスを持っていた場合...Moqの仮想メンバーを模擬する
public class MyClass {
protected virtual void A() {
/* ... */
}
protected virtual void B(...) {
/* ... */
}
}
...と私は私のテスト・フィクスチャでGetSomethingElse
のA()
メソッドをオーバーライドする部品番号を使用して...
var mock = new Mock<MyClass>();
mock.Protected().Setup("A").Callback(SomeSortOfCallback);
...使用モックのA
メソッドは素晴らしく機能します。しかし、メソッド内の何かがnot-mockedメソッドB
を呼び出す場合、実際の実装がMyClass
に存在する場合でも、このメソッドは何もせず、デフォルト値を返します。
これを回避する方法はありますか? Moqを間違って使用していますか?事前に
おかげで、
マニー
他の方法を模擬したい場合はどうすればよいですか? –
@LouisRhysこれがそれを妨げないことを確かめてください。あなたが明示的に何かを模倣すれば、 'CallBase'の設定は決してうまくいかないでしょう。 –