Mocking и DetachedCriteria в модульных тестах - PullRequest
2 голосов
/ 10 июля 2009

Как бы вы протестировали следующий код?

public IList<T> Find(DetachedCriteria criteria)
{      
    return criteria.GetExecutableCriteria(session).List<T>();
}

Я хотел бы смоделировать реализацию NH (например, установить макеты для ISession, ISessionFactory и т. Д.), Но у меня возникли проблемы с этим.

1 Ответ

1 голос
/ 10 июля 2009

Вы не должны действительно проверять это, поскольку это будет тестирование NHibernate. На самом деле, вы можете увидеть очень похожие модульные тесты в самом исходном коде NH.

Если вы хотите протестировать какой-то другой код, который использует этот код, вот как вы его заглушите:

Db.Stub(x => x.Find(Arg<DetachedCriteria>.Is.Anything))).Return(new List<Blah>{new Blah()});

По моему опыту, если вы хотите протестировать свои запросы (например, те, которые строят DetachedCriteria), вам гораздо лучше иметь базу данных в памяти, такую ​​как SQLite, или, что еще лучше, настоящий экземпляр SQL Server (или SQL Server). CE для памяти).

...