MicroSoft подделывает на статике с разной отдачей

Я пытаюсь провести модульное тестирование объекта, который использует общий статический класс фабрики. Я не вправе выписывать фабрику.

Я должен использовать Microsoft Fakes, чтобы подправить это. (Я думаю) Никогда не использовал это раньше. Мой вопрос заключается в том, что это общий фабричный метод, который используется три раза и должен возвращать 3 разных набора результатов. У Mock есть возможность последовательно выбирать метод и каждый раз возвращать разные результаты. Есть ли у подделки эта способность?

public static ReadOnlyCollection<T> Build<T>(IObjectA objA, IObjectB objB) where T : class

Внутри объекта он вызывает этот метод 3 раза с разными интерфейсами

IEnumerable<Base1> list = Factory.Build<Base1>(objA, objB);
IEnumerable<Interface1> list= Factory.Build<Interface1>(objA, objB);
IEnumerable<Interface2> list= Factory.Build<Interface2>(objA, objB);

Как будет выглядеть метод теста для чего-то подобного?

using(ShimsContext.Create()) {


Mock<Base1> mockObj1 = new Mock<Base1>();
                //manager.Setup(t=> t.)

Mock<Interface1> mockObj2= new Mock<Interface1>();
                //manager.Setup(t=> t.)

Fakes.ShimFactory.BuildOf1IObjectAIObjectB<Base1>((objA, objB) => new List<Base1>() { mockObj1.Object }.AsReadOnly());

Fakes.ShimFactory.BuildOf1IObjectAIObjectB<Interface1>((objA, objB) => new          
 List<Interface1>() { mockobj2.Object }.AsReadOnly());

//Uses factory method 3 times
MyObjectThatUsesTheFactory = new MyObjectThatUsesTheFactory();
//test
}

Спасибо за любые указатели!

1 ответ

Решение

Видимо, я был на ходу. Он возвращает разные результаты, как изложено выше. Просто вопрос правильности всех издевательств.

Спасибо

Другие вопросы по тегам