eso es típico de equivalencia problema y se ve como respuesta aceptada no es una buena idea. Trataré de explicar por qué.
Imagínese lo siguiente: tiene que escribir la prueba de integración en su servidor para asegurarse de que almacena su objeto de dominio de forma correcta. Usted tiene un código:
[TestMethod]
[Description(@"Sequentially perform operations
1. Save new item in DB
2. Get same Item from DB
Ensure that saved and get Items are equivalent")]
public void Repository_Create_Test()
{
var initialItem = GetTestItem();
//create item and check it is created correct
initialItem.ID = repository.Create(initialItem, userID, ownerID);
Item resultItem = repository.GetById(initialItem.ID, ownerID);
resultItem.Should().NotBeNull();
Assert.AreEqual(initialItem, resultItem);
}
Por lo tanto, es necesario verificar que el objeto leído de almacenamiento es absoluta equivalente del objeto que hemos enviamos al almacenamiento. Sobrescribir Equals
es una primera adivinanza fácil aquí. Para este caso, necesitamos configurar Equals
para comparar todos los campos de objetos. Pero desde la perspectiva de DDD eso es simplemente incorrecto. Las entidades de dominio se distinguen por una clave inmutable (o clave principal) y no por todos los campos mutables. Entonces, si estamos modelando el dominio de recursos humanos y el hipotético 'Mister X' tiene un nuevo número de teléfono, él sigue siendo el mismísimo 'Mister X'.
Dicho todo esto, actualmente uso FluentAssertions Framework que tiene una facilidad bastante poderosa para la comprobación de equivalencia. De esta manera:
resultItem.ShouldBeEquivalentTo(initialItem);
He aquí una pregunta similar para NUnit que será útil: http://stackoverflow.com/questions/318210/compare-equality-between-two-objects-in-nunit –
para realizar realmente la trabajo que le gustaría. Escribí una clase de utilidad que compara las propiedades de los dos objetos mediante el uso de la reflexión. Por el momento no tengo el código a mano, pero no es difícil implementar tal funcionalidad. – Juri
Si encuentras ese código Juri, me encantaría ver lo que has hecho. –