Мое веб-приложение использует полдюжины таблиц, каждая из которых заполняется, когда пользователь проходит через систему. Для анализа статистики я написал представление базы данных, чтобы свести эти таблицы в одно представление.
Представление работает, однако я хочу автоматизировать некоторые тесты для создания представления.
Моя идея сделать это состояла в том, чтобы создать модель / карту и репозиторий для вида - только с действием списка. Моя текущая реализация не работает.
Это мой репозиторий:
namespace FunctionalTests.SpssView
{
public class SpssRepository
{
private readonly ISessionManager _sessionManager;
public SpssRepository(ISessionManager sessionManager)
{
_sessionManager = sessionManager;
}
public IList<Spss> ListFromSpssView()
{
ICriteria criteria = _sessionManager.GetSession().CreateCriteria(typeof(Spss));
return criteria.List<Spss>();
}
}
}
Это класс модели:
namespace FunctionalTests.SpssView
{
public class Spss
{
public virtual String StudentId { get; set; }
public virtual String UPNSCN { get; set; }
...
}
}
И отображение:
namespace FunctionalTests.SpssView
{
public sealed class SpssMap : ClassMap<Spss>
{
public SpssMap()
{
Id(x => x.StudentId).GeneratedBy.Assigned();
Map(x => x.UPNSCN);
...
}
}
}
Я не совсем уверен в отображении идентификатора - как это только читается из вида?
Это мой тест:
[Test]
public void ShouldPopulateAndRetrieveFromSpssView()
{
var mockSessionManager = new Mock<ISessionManager>();
mockSessionManager.Setup(x => x.GetSession()).Returns(_session);
var caseRepository = new CaseRepository(mockSessionManager.Object);
var caseList = caseRepository.ListCases();
Assert.That(caseList.Count, Is.EqualTo(2));
var repository = new SpssRepository(mockSessionManager.Object);
var spssList = repository.ListFromSpssView();
Assert.That(spssList.Count, Is.EqualTo(2));
}
Обратите внимание на код списка дел - я поместил его туда, чтобы убедиться, что соединение с БД было установлено. Эта часть теста проходит.
Запуск выбора * из spss; возвращает два результата. (Я использую sql server 2005 fwiw)
И поскольку это не рабочий код, я создал новую папку в своем проекте Visual Studio FunctionalTests (я упоминаю об этом, поскольку мне кажется, что это одно из главных отличий между этим и моими рабочими репозиториями.) сделать разницу?
Можно ли проверить подобные виды?
Есть ли в любом случае я вижу sql, который генерируется?
Что я делаю не так ??!?
Спасибо:)