Методы расширения не подходят для тестирования (описанного здесь: Mocking Extension Methods with Moq, http://www.clariusconsulting.net/blogs/kzu/archive/2009/12/22/Howtomockextensionmethods.aspx).
Но, возможно, есть некоторые решения для насмешек методов Unity? В моем случае у меня есть следующая функция:
public class MyManager
{
public MyManager(IUnityContainer container) : base(container) { }
public IResult DoJob(IData data)
{
IMyLog log = MyContainer.Resolve<IMyLog>();
... use log.Id ...
MyContainer.Resolve<...>();//usage for other purposes...
}
Я хочу быть уверенным, что метод DoJob всегда будет получать объект "IMyLog" из контейнера, но не из других источников... как я могу проверить это?
Моя первоначальная идея заключалась в том, чтобы изменить реализацию метода DoJob и использовать его:
IMyLog log = UnityContainer.Resolve(typeof(IMyLog)) as IMyLog;
Но "Resolve (Type t,...)" также является методом расширения...
Любые мысли приветствуются.
P.S. Обратите внимание, что объект "мой журнал" создается далеко от MyManager.DoJob...