Немного опоздал на вечеринку, но это то, чем я занимался некоторое время.
Я пишу API REST, которые должны использоваться нашими мобильными приложениями.Мобильные приложения также написаны на C #, поэтому для меня имеет смысл написать обертку API (SDK).
При тестировании интеграции я настраиваю тестовые случаи, которые проверяют все конечные точки API, используя SDK .При выполнении тестов API работает на моем локальном IIS в режиме разработки.Каждый раз, когда сервер запускается, моя база данных dev стирается, воссоздается и заполняется данными для всех таблиц , что дает мне несколько реалистичный сценарий.Мне также не нужно беспокоиться о тестировании обновлений / удалений, потому что все, что требуется, это перестроить серверный проект, и NHibernate отбросит, создаст и заполнит мою базу данных.При желании это можно изменить для каждого запроса.
При тестировании моих репозиториев для меня важно знать, могут ли мои запросы переводиться с помощью NHibernate, поэтому все мои тесты репозитория используют LocalDB, который воссоздается для каждого теста .Это означает, что в каждом тестовом примере можно установить необходимые начальные данные для успешного выполнения тестов запроса.
Другое дело, что при заполнении базы данных реалистичными данными вы также бесплатно тестируете настройки внешнего ключа.Кроме того, сеялка использует классы вашего домена, так что это тоже хорошо выглядит!
Пример сеялки:
public void Seed(ISession s)
{
using(var tx = s.BeginTransaction()
{
var account1 = new Account { FirstName = "Bob", LastName = "Smith" };
var account2 = new Account { FirstName = "John", LastName = "Doe" };
account1.AddFriend(account2); // manipulates a friends collection
s.Save(account1);
}
}
Вы должны вызывать сеялку при создании фабрики сеансов.
Важно: настройка выполняется с помощью контейнера IoC.