Я думаю, вы упускаете смысл использовать насмешки в этой ситуации. То, что вы хотите издеваться, это метод
public SopRestriction FindByName(string name)
{
...
}
Итак, вы можете вернуть любой тип SopRestriction
, какой захотите, и не беспокоиться о том, что он запрашивает NHibernate.
Бессмысленно когда-либо издеваться над любым типом текста данных, потому что вы никогда не получите никакого значения.
Самый простой способ сделать это - извлечь интерфейс из TestRepository, например, ITestRepository, а затем сделать оставшуюся часть вашего графика зависимостей зависимой от ITestRepository, и вы сможете легко смоделировать сам репозиторий в своих модульных тестах.
Продолжение: Что касается вашего ответа о желании проверить вызовы методов внутри вашего репозитория, то я бы рекомендовал обернуть все специфическое использование NHibernate в сами методы, которые не имеют какого-либо параметра или возврата. это специфично для NHibernate, так что вы можете высмеивать эти методы и просто ожидать, что они будут работать. Вот почему модульное тестирование менее ценно на данном этапе, потому что вы не получаете много. С учетом того, что вы сказали, я бы не стал над ними издеваться, но сделал бы их полными "интеграционными" тестами, которые касаются базы данных или делают то, что им нужно. Я по-прежнему считаю, что это юнит-тесты, даже если пуристы TDD скажут, что это интеграционные тесты.