2016-12-04 12 views
0

エンティティのセッターはすべてプライベートなので、エンティティを初期化するためにコンストラクタを使用します。保護されたセッターをモックする

ユニットテストを書く必要があり、複数のオブジェクトをインスタンス化する必要があります。 「問題」は、いくつかのランダムなデータでエンティティをインスタンス化するだけのコンストラクタを作成したくないということです。代わりに、私はこれを行うには、C#の簡単な方法を活用したいと思います:私は考えられ

var user = new User() { Name = "John", LastName = "Smith" }; 

1つのオプションは、セッターは、内部にし、InternalsVisibleToを設定することです。しかし、私は他のエンティティにこれらのプロパティを設定させたくありません。

私はMoqでこれを行うことはできません。これを回避する他の方法はありますか?

答えて

2

あなたの目標は、ちょうどあなたが実行してゲッターを公開する場合は、それらを模擬することができるはずで保護性質をモックすることができるようになる場合:

public int A { get; protected set; }

別のオプションは、あなたのクラスを拡張することですテストしようとするとクラスのテストバージョンは、プロパティを設定するコンストラクタまたはパブリックメソッドを持つことができます。

+0

+1 2番目のオプションでは、Userから派生したTestUserを作成し、保護されているセッターを呼び出すパブリックセッターを追加してください。 – zaitsman

関連する問題