Me pregunto cómo evitar esto. Estoy usando nhibernate y fluido.Pruebas unitarias y nhibernate?
que tienen una clase de dominio como éste
public class User
{
public virtual int UserId {get; private set;}
}
esto parece ser la convención cuando se hace nhibernate ya que impide que las personas y el establecimiento de Identificación ya que es generada automáticamente.
Ahora el problema viene cuando estoy probando la unidad.
Tengo todo mi código nhibernate en un repositorio que me burlo, así que solo estoy probando mi capa de servicio. El problema viene cuando esto sucede.
User user = repo.GetUser(email);
esto debería devolver un objeto de usuario.
así que quiero utilizar moq hacer esto
repo.Setup(x => x.GetUser(It.IsAny<string>())).Return(/* UserObject here */)
ahora aquí está el problema
Necesito hacer ese objeto de usuario y ponerlo en la parte de retorno.
Así que haría algo así
User user = new User()
{
UserId = 10,
}
Pero esto es donde radica el problema que tengo que poner la identificación porque en realidad lo uso más tarde para hacer algo de LINQ en algunas colecciones (en la capa de servicio como no está llegando a mi base de datos así que no debería estar en mi repositorio), así que tengo que configurarlo, pero no puedo configurarlo porque es un conjunto privado.
¿Qué debo hacer? ¿Debería eliminar el privado o hay alguna otra manera?
Gracias esto funciona igual perfectamente. Puede que tenga síntomas del número 2. Simplemente tiene que simular tantas cosas. Estoy tratando de mantenerlo también solo lo que necesito probar. Por ejemplo, no me burlo de un nombre de usuario para el usuario, ya que no se utiliza en el método. Me gustaría probar la moc de autofixture pero no entiendo cómo usarla realmente y parece que no hay tutoriales reales sobre ella, así que no puedo determinar si esto me ayudaría o no. – chobo2