2

TDDを採用しようとしているASPMVCを知っています。以下の例では、xUnitとTestDriven(Moqを含む)をインストールしました。

問題は、画像アップロードビューモデルをモックして、アップロードされていると断言できることです。

Moqは私に問題を与えました:

非仮想(VBでオーバーライド可能)メンバーのセットアップが無効です

しようとしている間

var imageMock = new Mock<ImageViewModel>();
imageMock.Setup(x => x.IsUrl).Returns(true);`

続行する方法がわかりません。ビューモデルのインターフェイスを作成するのはナンセンスです。テスト環境ではなく、サイト用にプログラミングしています。

モック環境を置き換えるか、インターフェースを定義する必要がありますか...?

経験豊富で有益なアドバイスをいくつか与えてください。そして、あなたが私にアドバイスしていることに対して、良いサンプルを提供するか、少なくとも好きにしてください。

ありがとう!

4

1 に答える 1

1

まず第一に、これは自動プロパティですか?

public bool IsUrl {get; set;}

その場合は、テストの設定で自分で値を設定してください。自動プロパティでない場合は、プロパティではなくメソッドに移動する方が理にかなっていますか。そして、その時点で、メソッドを仮想化することができます(これはエラーメッセージが実際に言っていることです)。

モックを作成する場合、インターフェイスでも仮想でもないものをモックすることはできません(有料のモックライブラリがいくつかあると思いますが、FakeItEasy、Moqなどでは仮想である必要があります)。

これを行うには、プロパティを次のように表示する必要があります。

public virtual bool IsUrl {get; set;}

次に、ビューモデルで何をテストしていますか?ゲッターとセッターのテストは、コードの他の場所でテストされる可能性が高いため、主に時間の無駄です。さらに、ゲッターとセッターのテストは、コードではなくコンパイラーをテストしています。ゲッターとセッターが.NETで機能しない場合は、多くの問題が発生します。ビューモデルの作成をテストし、作成後に正しい値を持っていることを確認することをお勧めします。

于 2013-03-26T21:50:50.717 に答える