Moq - Настройка свойства для возврата строки из параметра метода - PullRequest
3 голосов
/ 30 марта 2011

Я пытаюсь сделать следующее:

mockObject.Setup( a => a.MyObject.MyMethod( It.IsAny<string>() ).MyProperty ).Returns( ?? );

, где Returns () возвращает любую строку, введенную в MyMethod.

Возможно ли это?

При попытке выполнить следующее я получаю System.Reflection.TargetParameterCountException: Несоответствие количества параметров.

mockObject.Setup( a => a.MyObject.MyMethod( It.IsAny<string>() ).MyProperty ).Returns( (string s) => s );

1 Ответ

2 голосов
/ 30 марта 2011

Примерно так:

mockObject.Setup( a => a.MyObject.MyMethod( It.IsAny<string>() ) )
    .Returns( (string s) => 
         {
             var mockReturnedObject = new Mock<Returned>();
             mockReturnedObject.Setup(o => o.MyProperty).Returns(s);
             return mockReturnedObject.Object;
         } );

Или, если ваш "возвращаемый объект" - это просто POCO:

mockObject.Setup( a => a.MyObject.MyMethod( It.IsAny<string>() ) )
    .Returns( (string s) => new Returned {MyProperty = s} );
...