Если у меня есть следующий домен объект:Testing сохранение слоя в приложении/TDD DDD
public class Customer
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual ISet<Order> Orders { get; set; }
public Customer()
{
Orders = new HashedSet<Order>();
}
public virtual void AddOrder(Order order)
{
order.Customer = this;
Orders.Add(order);
}
}
со следующим отображением NHibernate:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Examples" assembly="Examples">
<class name="Customer">
<id name="Id">
<generator class="guid.comb" />
</id>
<property name="Name" length="50"/>
<set name="Orders" table="CustomerOrder" cascade="all-delete-orphan" lazy="true">
<key column="CustomerId"/>
<many-to-many class="Order" column="OrderId"/>
</set>
</class>
</hibernate-mapping>
Есть ли значение в этом тесте?
[Test]
public Save_NameWritten_SameNameIsReadback()
{
var expected = new Customer { Name = "Fred Quimby" };
_repo.Save(c);
var actual = _repo.Find(expected.Id);
Assert.AreEqual(expected.Name, actual.Name);
}
Неужели люди обычно проверяют свой упорный слой следующим образом? Убедиться, что каждое поле сохраняется отдельно? Я честно не знаю, что такое лучшая практика для чего-то подобного. Я могу проверить что-то с длинными строками и родительскими/дочерними отношениями, но как насчет целых чисел и дат? Это избыток?
Я просто говорю о слое persistence здесь, а не о бизнес-логике в доменном слое. Для этого я бы высмеял репозиторий, тогда как здесь я проверяю, что хранилище фактически спасло то, что я сказал ему, чтобы сохранить. Что делать, если кто-то забывает отображать поле или имеет фальшивую длину строки в сопоставлении?
Есть ли какие-либо инструменты для автоматического создания таких тестов в .NET? Или это «плохо»?