estoy usando NHibernate para persistir esta entidad:¿Cómo puedo probar la unidad de propiedades protegidas que solo debe configurar NHibernate?
public class Store
{
public int Id { get; protected set; }
public int Name { get; set; }
}
Nota cómo la propiedad Id
tiene un colocador protegida. Esto es para evitar que los usuarios cambien el Id
al tiempo que permiten a NHibernate asignarle un Id
cuando lo guarda en la base de datos.
En una de mis pruebas de unidad, estoy usando Moq con el siguiente código para burlarse de mi repositorio:
var mock = new Mock<IRepository>();
mock.Setup(x => x.GetById<Store>(It.IsAny<int>()))
.Returns(new Store { Value = "Walmart" }); // can't set the ID here
var store = Repository.GetById<Store>(5);
Assert.That(store.Id == 5);
Cuando le digo Moq devolver una nueva instancia Store
, no puedo asignar el ID, y la prueba de la unidad falla. ¿Cómo pruebo esta propiedad? No quiero cambiar el nivel de acceso de la propiedad porque no quiero que los usuarios la cambien manualmente, pero eso es exactamente lo que tengo que hacer aquí para probarlo.
Gracias, nunca se considera burlarse del objeto de la tienda en sí! –
De nada, normalmente lo uso con interfaces, pero como ya tienes que tener todo virtual para NHibernate, este es un gran ajuste. – arootbeer