Вместо того, чтобы пытаться «смоделировать» вызов Sum
в Multiplication
, вы должны просто протестировать его независимо, так как вызов Sum
- это деталь реализации. Однако, если ваш реальный код несколько сложнее, вы можете добавить перегрузку, которая принимает Func
:
public int Multiplication(int x,int a,int b)
{
return this.Multiplication(x, a, b, (a, b) => a + b);
}
public int Multiplication(int x,int a,int b, Func<int, int, int> sumFunc)
{
return x * sumFunc(a, b);
}
Затем вы можете предоставить свой собственный экземпляр sumFunc
в своих тестах.
В качестве альтернативы вы можете сделать Sum
виртуальным и переопределить его в своих методах тестирования, которые требуют его замены вашей собственной реализацией.