이것은 설명서의 버그 인 것 같습니다. 개체 브라우저에서 Rhino.Mocks.dll
(3.6.0.0)을 검사 할 때 Rhino.Mocks.Arg<T>
은 Is
및 List
의 메서드 만 제공하지만 Property
은 제공하지 않는 것으로 나타났습니다.
그러나 Rhino.Mocks.Constraints
에는 Property
클래스가 포함되어 있습니다. (오류를 컴파일 생산)
AAA 구문 : "오래된"구문을 사용하면 동일한 기능을 수행 할 수 있어야한다
myStub.Expect(x => x.MethodToCall(Arg<T>.Property.Value("PropertyName", myDesiredPropertyValue))).Result(myMockResult);
이전 구문 (작업을) :
는
myStub.Expect(x => x.MethodToCall(null)).Constraints(Property.Value("PropertyName", myDesiredPropertyValue)).Result(myMockResult);
문서를 말한다 "IgnoreArguments()
, Constraints()
및 RefOut()
에 익숙합니다. [...] 단지 Arg<T>
만 사용하는 것이 좋습니다. 좀 더 일관성 있고 이해하기 쉽습니다. 쓰다." 제프 브리지 먼은 언급 한 바와 같이
, 당신은 또한 Arg<T>.Matches
사용할 수 있습니다
myStub.Expect(x => x.MethodToCall(Arg<T>.Matches(m => m.PropertyName == myDesiredPropertyValue))).Result(myMockResult);
그것은 안전하게 검색 할 필요없이 속성의 이름을 리팩토링 수 있다는 것을 의미, 'refactory 안전'하다는 장점이있다 어떤 '마법의 끈'이라도. 또한 Constraints()
대신 Arg<T>
을 사용하는 설명서의 제안 사항을 충족합니다.
출처
2012-01-31 11:02:41
Jan
나는 또한 무슨 일이 일어 났는지 궁금합니다 ... 그리고 더 구체적으로, 더 나은 대안이 무엇입니까. 당신은 아마도 Arg.Matches ... –