Нельзя передать интерфейс, так как интерфейс предназначен только для стандартизации.
Вы должны пройти реализацию интерфейса. Реализация означает класс, который реализует ICalculateAge
.
Документация по интерфейсу
Этот блог объясняет точно такой же сценарий на примере. Это может быть полезно для вас.
В этом блоге они используют Moq framework для макета интерфейса. Они также определяют, что должно быть возвращено при вызове метода для фиктивного объекта.
var mockFinancialService = new Mock<IFinancialService>();
mockFinancialService.Setup(x =>
x.GetFinancialScore(balance)).Returns(expected);
Затем они передают этот смоделированный объект классу вместо интерфейса.
var account = new BankAccount(mockFinancialService.Object);
account.PutMoney(balance);
Все вышеперечисленные шаги организуют все необходимое для модульного тестирования. Далее вам просто нужно вызвать метод и проверить результат.
// Act
string actual = account.GetFinancialScore();
// Assert
Assert.AreEqual(actual, expected);
Аналогично этому вам потребуется настроить макет с вашего интерфейса, если вы не хотите тестировать фактическую реализацию интерфейса.