Вот класс, который я хочу смоделировать, массивно усеченный.
public class FooHandler
{
private FooInstance foo;
public void ConstructInstance(string fooSpecs)
{
foo = SomeMethod(fooSpecs);
}
public string GetSomeProperty()
{
return foo.SomeProperty();
}
}
В действительности каждый метод имеет много внутренних логик c. Это просто идея.
Код, который я хочу протестировать, требует FooHandler, и он вызывает оба метода, один за другим.
Я хочу поиздеваться над моим FooHandler, чтобы проверить, является ли мой Код вызывает это правильно.
var mockedFooHandler = new Mock<FooHandler>();
mockedFooHandler.Setup(x => x.ConstructInstance(EXAMPLE_FOO_SPEC));
mockedFooHandler.Setup(x => x.GetSomeProperty()).Returns(EXPECTED_PROPERTY);
Теперь я хочу объединить эти две установки. Я хочу вернуть разные EXPECTED_PROPERTY, если первый метод был вызван с другим EXAMPLE_FOO_SPE C. Первый метод является недействительным, а второй не принимает параметров. Так что я хочу установить внутреннее состояние объекта, как это делает реальный объект. Но состояние является частным.
Создание нескольких разных mockedFooHandlers с их собственными запрограммированными ответами для инъекции в разные места невозможно
Как мне go об этом?