0

私は、Moq を使用したセットアップと単体テストについてもう少し理解することに取り組んでいます。私は小さな問題に遭遇しました。

私がやりたいことは次のようなものです:

view.Setup(x => x.GetReference("object1")).Returns(object1);
view.Setup(x => x.GetReference("object2")).Returns(null);

ただし、この方法で呼び出しを行うと、Null ステートメントに反応するコード ブロックにヒットすることはありません。特定の引数によって呼び出されたときに特定の方法で動作するようにセットアップを設定するにはどうすればよいですか?

4

1 に答える 1

0

moq は、値を返す 2 つの方法をオーバーロードします。

  1. instance: Returns(instance);
  2. delegate(Func<T>): Returns(()=>new Foo());

この問題は、Returns メソッドを使用する対象のあいまいさが原因であると考えられます。

したがって、コードの 2 番目のセットアップでは、次の方法で NULL の明示的な型を渡す必要があります。

  1. view.Setup(x => x.GetReference("object2")).Returns((ExplicitType)null);
  2. view.Setup(x => x.GetReference("object2")).Returns(() => null);
于 2012-07-30T06:08:39.220 に答える