Moq - 设置从方法参数返回字符串的属性

时间:2011-03-29 23:10:27

标签: .net mocking moq

我正在尝试执行以下操作:

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 个答案:

答案 0 :(得分:2)

这样的事情怎么样:

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} );