Assert.AreEqual falla mientras que no debería
Tengo un comportamiento realmente extraño que no puedo explicar.
Tengo la siguiente clase:
public class Project
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
Y un método que devuelve unProject
objeto:
public Project GetByName(string Name)
{
using (ISession session = NHibernateHelper.OpenSession())
{
Project project = session.CreateCriteria(typeof(Project))
.Add(Restrictions.Eq("Name", Name))
.UniqueResult<Project>();
return project;
}
}
He añadido una prueba de unidad para probar elGetByName
método:
[TestMethod]
public void TestGetByName()
{
IProjectsRepository projectRepository = new ProjectsRepository();
var expected = new Project { Id = 1000, Name = "Project1" };
var actual = projectRepository.GetByName(expected.Name);
Assert.AreEqual<Project>(expected, actual);
}
Pero cuando ejecuto la prueba de la unidad, falla al comparar el tipo de los dos objetos con el siguiente error:
Assert.AreEqual ha fallado. Se esperaba: <MyProject.NHibernate.Project>. Real: <MyProject.NHibernate.Project>.
¿Por qué está fallando la afirmación?
No esAfirmar.AreEqual ¿Afirmando solo en las propiedades de los objetos?
Según la documentación:
Método Assert.AreEqual (Objeto, Objeto)
Verifica que dos objetos especificados son iguales. La aserción falla si los objetos no son iguales.
Método Assert.AreSame
Verifica que las variables de objeto especificadas se refieren al mismo objeto.