"빌더"중 하나에서 MOQ SetupGet을 사용하는 다음과 같은 방법이 있습니다. 필자는 FakeItEasy를 사용하기 위해 다시 쓰기를 시도했지만, WithReturnType은 유형을 알려주는 범용 버전 만 제공하기 때문에 FakeItEasy를 사용하려고 시도했지만이를 수행하는 방법이없는 것으로 보입니다. 런타임에 결정된 실제 유형의 비 제네릭 버전은 없습니다.MOQ 속성 설정을 FakeItEasy로 변환
허용 전체 30 분을 보냈습니다. FakeItEasy에, 그래서 거기에 나는 그것이 FakeItEasy를 사용하여 다시 쓰기 시도 표현의 내 제한된 지식을 ... MOQ
public void With<TProperty>(Expression<Func<TCommand, TProperty>> expression, TProperty value)
{
CommandFake.SetupGet(expression).Returns(value);
}
와
기존 방법보다 나은 방법이 될 수도 있지만 나는를 설정할 수 없습니다 반환 값.
public void With<TProperty>(Expression<Func<TCommand, TProperty>> expression, TProperty value)
{
var methodName = string.Empty;
var e = (LambdaExpression) expression;
if (e.Body.NodeType == ExpressionType.MemberAccess)
{
var memberInfo = ((MemberExpression) e.Body).Member;
if (memberInfo.MemberType == MemberTypes.Property)
{
methodName = "get_" + memberInfo.Name;
}
//A.CallTo(CommandFake).Where(call => call.Method.Name == methodName)
// .WithReturnType<>()
}
//CommandFake.SetupGet(expression).Returns(value);
}
다른 방법이 있습니까? With에 대한이 메서드 서명에 붙어 있지 않습니다.
이것은 또한
public void With(Expression<Action<TCommand>> expression)
그래서 그 사람이 내가 MOQ 사용자 아니에요 With(x=>x.someProp=someValue)
두 번째 메서드 서명을 얻으려고했습니다. (Expression> 표현식)이 작동하고 거기에 TProperty가 없으며 generic 인수를 완전히 잊었습니다. 그 점을 지적 해 주셔서 감사합니다. –
epitka
도움이 된 것을 기쁘게 생각합니다. –