Returning value that was passed into a method

Viewed 183094

I have a method on an interface:

string DoSomething(string whatever);

I want to mock this with MOQ, so that it returns whatever was passed in - something like:

_mock.Setup( theObject => theObject.DoSomething( It.IsAny<string>( ) ) )
   .Returns( [the parameter that was passed] ) ;

Any ideas?

4 Answers

You can use a lambda with an input parameter, like so:

.Returns((string myval) => { return myval; });

Or slightly more readable:

.Returns<string>(x => x);

For those who are not using Moq, there's a way with NSubstitute.

mock.Method(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<string>()).Returns(callInfo =>
    {
         var arg1 = callInfo[0].ToString();
         var arg2 = callInfo[1].ToString();
         var argN = callInfo[n-1].ToString();
         return arg1 + arg2 + argN; //or whatever
    });
Related