인터페이스에 대한 방법이 있습니다.
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));
메소드 중 하나만 사용하더라도 메소드의 서명과 일치하도록 항상 모든 인수를 참조해야합니다.
답변
일반적인 Returns<T>
방법으로이 상황을 잘 처리 할 수 있습니다.
_mock.Setup(x => x.DoSomething(It.IsAny<string>())).Returns<string>(x => x);
또는 메소드에 여러 입력이 필요한 경우 다음과 같이 지정하십시오.
_mock.Setup(x => x.DoSomething(It.IsAny<string>(), It.IsAny<int>())).Returns((string x, int y) => x);