Добавляю мой ответ после того, как он уже принят, но ...
Сам факт того, что для теста необходимо передать только некоторые зависимости, наводит на мысль о возможной проблеме проектирования. Хорошим лакмусовым тестом является то, что все поля в типе должны использоваться в каждом методе - очень сложно делать это все время - но если вы не можете, это означает, что класс, вероятно, можно разбить на более мелкие классы с более тонкими обязанностями , Когда вы разбиваете их, каждый класс получает только те зависимости, которые им нужны немедленно.
С другой стороны, если то, что вы делаете здесь, представляет собой ручной указатель службы и вы тестируете только подмножество функций, возможно, вы захотите создать конструкторы только для тестирования. Такие как:
internal SomeServices(IServiceOne one, IServiceTwo two)
{
}
Или предоставьте сервисы с помощью методов получения / установки и назначьте их соответствующим образом. Опять же, внутреннее ключевое слово здесь может быть использовано для поддержания чистоты вашего дизайна:
public IServiceOne One
{
get { return _one; }
internal set { _one = value; }
}
Конечно, вы захотите добавить атрибут InternalsVisibleTo в свой код, чтобы ваши тесты могли получить доступ к этим внутренним методам.