Нам нужно заблокировать универсальный метод, который будет вызываться с использованием анонимного типа в качестве параметра типа. Рассмотрим:
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, являющимся анонимным типом. Этот тип недоступен за пределами тестируемого метода. В результате заглушка никогда не вызывается.
Можно ли заглушить универсальный метод без указания параметра типа?