Если я правильно понимаю ваш вопрос, я думаю, что это вопрос дизайна. Хорошая вещь о модульном тестировании заключается в том, что написание тестов часто заставляет вас улучшать дизайн. Если вам нужно высмеивать слишком много вещей при тестировании метода, это часто означает, что вы должны разделить ваш класс на два меньших класса, которые будет легче тестировать (и писать, и поддерживать, и исправлять, и повторно использовать и т. *
В вашем случае, метод A, кажется, находится на более высоком уровне, чем методы A, B, C. Вы можете рассмотреть возможность удаления его в класс более высокого уровня, который обернул бы SomeClass:
class HigherLevelClass {
ISomeClass someClass;
public HigherLevelClass(ISomeClass someClass)
{
this.someClass = someClass;
}
void methodA() {
someClass.methodB();
someClass.methodC();
someClass.methodD();
}
}
class SomeClass : ISomeClass {
void methodB() {
//does something
}
void methodC() {
//does something
}
void methodD() {
//does something
}
}
Теперь, когда вы тестируете метод A, все, что вам нужно, - это небольшой интерфейс ISomeClass и три вызова метода.