2009-07-09 3 views
2

Как бы вы протестировали следующий код?Mocking and DetachedCriteria в модульных тестах

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

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

ответ

1

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

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

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

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

+0

Я сам тестировал реализацию репозитория. Вы правы, здесь нечего тестировать, это будет тестирование NHibernate, я должен, вероятно, сосредоточиться на тестировании запросов. Спасибо! – 2009-07-09 21:00:09

Смежные вопросы