私はこの方法をテストしようとしています:
[Test]
public void Test_GetReferenceValue()
{
Person person= new Person() { Name = "PJ" };
PersonalProperty<Person> personalProperty = new PersonalProperty<Person>();
var result = personalProperty.GetReferenceValue(person);
Assert.AreEqual("PJ", result);
}
メソッド GetReferenceValue には次の実装があります。
public override object GetReferenceValue(TOwner owner)
{
Person value = this.Accessor(owner);
if (value == null)
return null;
else
return value.Name;
}
私は Accessor プロパティの起源を見つけようとしましたが、別のアセンブリで見つけました:
public class PersonalProperty<TOwner> : Property<TOwner, Person>
where TOwner : class
{
public virtual Func<TOwner, TProperty> Accessor { get; internal set; }
}
テストにコードを入れることができれば、上記のテストは完全に実行されます。
personalProperty.Accessor = p =>p;
これは、Funcデリゲートの定義/メソッドを配置することです..しかし、アクセサーが内部的に設定されているため、これを行うことはできません。つまり、私が別のアセンブリにいる場合は設定できません(私は今です)。コードを変更することは許可されていないため、アクセサーのアセンブリと友達になることはできません。別のプロジェクト/アセンブリでのみテストを作成できます。
GetReferenceValue をテストするにはどうすればよいでしょうか。リフレクションは役に立ちますか?