Ответ 1
Вы можете использовать лямбда с входным параметром, например:
.Returns((string myval) => { return myval; });
Или немного читаем:
.Returns<string>(x => x);
У меня есть метод на интерфейсе:
string DoSomething(string whatever);
Я хочу издеваться над этим с помощью MOQ, чтобы он возвращал все, что было передано, например:
_mock.Setup( theObject => theObject.DoSomething( It.IsAny<string>( ) ) )
.Returns( [the parameter that was passed] ) ;
Любые идеи?
Вы можете использовать лямбда с входным параметром, например:
.Returns((string myval) => { return myval; });
Или немного читаем:
.Returns<string>(x => x);
Еще более полезно, если у вас есть несколько параметров, вы можете получить доступ ко всем/всем из них:
_mock.Setup(x => x.DoSomething(It.IsAny<string>(),It.IsAny<string>(),It.IsAny<string>())
.Returns((string a, string b, string c) => string.Concat(a,b,c));
Вам всегда нужно ссылаться на все аргументы, чтобы соответствовать сигнатуре метода, даже если вы собираетесь использовать только один из них.
Общий Return<T>
метод может прекрасно справиться с этой ситуацией
_mock.Setup(x => x.DoSomething(It.IsAny<string>())).Returns<string>(x => x);