5

モックに型を偽装させる方法はありますか? 私はこのようなことをしようとしています:

var myMock = new Mock<IMyType>();
myMock.Setup(x => x.GetType()).Returns(typeof(MyTypeImpl));

ただし、GetTypeオーバーライドできません。

助言がありますか?

4

2 に答える 2

7

私はこれが古い投稿であることを知っていますが、私はこの問題の解決策を探していました...

Moqを使用すると、インターフェイスに標準のGetTypeシグネチャを追加して、メソッドがすでに実装されているため、コードを追加することなく、Moqがメソッドをモックできるようにすることができます。

Type GetType();
于 2011-03-04T13:40:24.557 に答える
7

is演算子を使用して型をチェックする代わりに、同様の機能を実行する独自のオーバーライド可能なインターフェイス メソッドを実装し、通常の一連のクラスで演算子 (または) を使用して実装することができます (すべきではありません)。istypeof()/GetType()

とはいえ、このようにテスト可能にする必要がある方法でオペレーターを使用している場合、is基本的にポリモーフィズムとインターフェースの目的をどこかで無効にしている可能性が高くなります。処分できないか考えてみます。

于 2009-06-09T12:12:33.040 に答える