15

ユニットテストには、NUnit2.6とMoq4.0を使用しています。Moqのプロキシオブジェクトがメソッド呼び出しを実際の実装に中継しない仮想メンバーに関する特定のケースがあります(おそらく設計による)。たとえば、クラスがあったら...

public class MyClass {
    protected virtual void A() {
        /* ... */
    }

    protected virtual void B(...) {
        /* ... */
    }
}

...そして、Moqを使用してテストフィクスチャGetSomethingElseののメソッドをオーバーライドします...A()

var mock = new Mock<MyClass>();
mock.Protected().Setup("A").Callback(SomeSortOfCallback);

...モックのA方法を使用すると見事に機能します。ただし、上記のメソッドのいずれかがモックされていないメソッドを呼び出すB場合、実際の実装がに存在する場合でも、メソッドは何も実行しないか、デフォルト値を返しますMyClass

これを回避する方法はありますか?Moqを間違って使用していますか?

よろしくお願いします、
マニー

4

2 に答える 2

22

設定mock.CallBase = trueして、あなたは行ってもいいはずです。

于 2012-07-09T08:09:06.917 に答える
2
 var systemUnderTest = new Moq.Mock<ProcessBulkData> { CallBase = true };
 systemUnderTest.Setup(s => s.MethodName(...)).Returns(...);
 var actual=systemUnderTest.Object.BulkInsert(...);
于 2016-12-16T18:36:41.240 に答える