Нам нужно заглушить общий метод, который будет вызываться с использованием анонимного типа в качестве параметра типа. Рассмотрим:
interface IProgressReporter
{
T Report<T>(T progressUpdater);
}
// Unit test arrange:
Func<object, object> returnArg = (x => x); // we wish to return the argument
_reporter.Stub(x => x.Report<object>(null).IgnoreArguments().Do(returnArg);
Это будет работать, если фактический вызов .Report <T> () в тестируемом методе был выполнен с объектом как параметр типа, но на самом деле метод вызывается с типом анонимного типа. Этот тип недоступен вне тестируемого метода. В результате, заглушка никогда не вызывается.
Можно ли заглушить общий метод без указания параметра типа?