2011-10-25 20 views
0

Moq機能構文が非公開プロパティの設定をサポートしているかどうかは知りませんか?私はそれが動作しないことに気づいた。Moq機能構文を使用して非公開プロパティを設定する

注:これは機能構文です。

public class Foo 
{ 
    public virtual int FooProperty { get; protected set; } 
} 

これはエラーをスローしますが、FooProperty

Mock.Of<Foo>(x => x.FooProperty == 1); 

定期的な構文は正常に動作を模擬するために失敗していません。

var mockFoo = new Mock<Foo>(); mockFoo.SetupGet(x=>x.FooProperty) 
    .Returns(1) 
+0

モックしようとしているサンプルコード、moqの設定、エラーが表示されていることをご確認ください。 – PatrickSteele

+0

内部のメンバーをモックすることは私には意味がありません。サンプルをお願いしますので、その必要性を理解していますか? – Fischermaen

答えて

0
あなたがテスト対象のクラスを含むアセンブリにアセンブリ属性を追加する場合には(AssemblyInfo.csに追加します)内部プロパティのモックをサポートしています

:あなたはまた、追加する必要があります(

// This assembly is the default dynamic assembly generated Castle DynamicProxy, 
// used by Moq. Paste in a single line. 
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] 

これを行うと、これが追加されたアセンブリの内部プロパティをモックすることができます。プライベートプロパティや保護されたプロパティをモックしたい場合、私はそれを直接行う方法がないと確信しています。保護されている場合は、Dummy継承者を作成し、その保護されたメンバーにアクセス/操作するpublicメソッドまたはプロパティを与えることができます。私的にはあなたができることは本当にありません。

1

Microsoft ResearchのPex/Molesツールを調べる価値があります。 Molesは、非公開のもの用のアクセサを作成するために使用されます。

関連する問題