У меня есть следующее определение класса, согласно которому поле attribute
гидратируется посредством отражения NHibernate.Поле не отображается как объект, но вместо этого я хочу скрыть его реализацию и просто предоставить свойства, которые ссылаются на свойства поля attribute
.
public class CustomerAttribute : ICustomerAttribute
{
private IAttribute attribute;
public string DisplayName
{
get { return attribute.DisplayName;}
}
}
Япытаясь смоделировать этот объект с RhinoMocks, но я не уверен, как гидратировать поле attribute
для тестирования.Я попытался установить поле attribute
вручную с помощью отражения, но я получаю ошибку прокси-сервера от RhinoMocks (что имеет смысл).
Итак, как мне гидрировать поле attribute
, чтобы я мог проверить свойства объекта CustomerAttribute?
Вот мой тест прямо сейчас ...
[Test]
public void PropertiesTest()
{
MockRepository mock = new MockRepository();
ICustomerAttribute attribute = mock.StrictMock<ICustomerAttribute>();
//Set the attribute field
FieldInfo fieldInfo = typeof(CustomerAttribute).GetField("attribute",
BindingFlags.Instance | BindingFlags.SetField |
BindingFlags.NonPublic);
fieldInfo.SetValue(attribute, new Domain.Attribute()); //This does not work
Expect.Call(attribute.DisplayName).Return("Postal Code");
mock.ReplayAll();
Assert.AreEqual(true, attribute.DisplayName);
mock.VerifyAll();
}