2015-04-01 5 views
0

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

Я должен использовать подделки Microsoft для подгонки. (Я думаю) Никогда не использовал его раньше. Мой вопрос состоит в том, что это общий заводский метод, используемый три раза и должен возвращать 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 
} 

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

ответ

0

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

С благодарностью

 Смежные вопросы

  • Нет связанных вопросов^_^