1

さて、次のようなクラスがあるとしましょう...

public class Foo : IFoo
{
    public string Bar
    {
        get { ... }
    }

    public void Initialize()
    {
        ...
    }
}

...そして、ご覧のとおり、インターフェイスを実装しているので、モックできます。今、私の単体テストでは、このようなモックを構築しています...

var mock = new Mock<IFoo>();
mock.SetupProperty(p => p.Bar).SetReturnsDefault("Some static value here.");

...しかし、テストを実行すると、次のエラーが発生します...

System.ArgumentException: プロパティ IFoo.Bar は読み取り専用です。パラメータ名: 式

だから、3つの質問:

  1. 私は何を間違っていますか?
  2. 私は何をする必要がありますか?
  3. 私がどのように誤解したか説明してもらえますSetReturnsDefaultか?

皆さんありがとう!

4

2 に答える 2

10

明らかに、エラー メッセージは、そのような読み取り専用プロパティをモックできないことを示しています。代わりに、次を試してください。

mock.SetupGet(p => p.Bar).Returns("whatever");

何らかの文字列を返すように明示的に設定されていないすべての文字列プロパティが必要な場合は、次のようにします。

mock.SetReturnsDefault<string>("whatever"); 
// IMPORTANT: don't call mock.SetupGet(p => p.Bar) as it will override default setting
于 2012-10-05T11:58:21.587 に答える
-3

これを試して:-

public class Foo : IFoo
{
    priave string bar;
    public string Bar
    {
        get { ... }
        set {bar=value;}
    }

    public void Initialize()
    {
        ...
    }
}

Set を指定する必要があります。それ以外の場合は、読み取り専用になります。

于 2012-10-05T12:02:30.477 に答える