2011-11-08 2 views
3

Arg<T>.Property은 Rhino Mock v3.5에 대한 인라인 제한 조건에 대한 문서의 일부이지만 v.3.6에서는 찾을 수 없습니다. 어떻게 된 거예요? Rhino Mocks의 Arg .Property

문서

은 여기에 있습니다 : http://ayende.com/Wiki/Rhino+Mocks+3.5.ashx?AspxAutoDetectCookieSupport=1#SimpleConstraints

Arg<T>.Property는 제약에서 언급 한 테이블을 참조합니다.

+1

나는 또한 무슨 일이 일어 났는지 궁금합니다 ... 그리고 더 구체적으로, 더 나은 대안이 무엇입니까. 당신은 아마도 Arg .Matches ... –

답변

3

이것은 설명서의 버그 인 것 같습니다. 개체 브라우저에서 Rhino.Mocks.dll (3.6.0.0)을 검사 할 때 Rhino.Mocks.Arg<T>IsList의 메서드 만 제공하지만 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>을 사용하는 설명서의 제안 사항을 충족합니다.

+0

을 사용할 수 있습니다. 그래도 Arg.Matches 메서드를 사용하여 '마법 문자열이 첨부되지 않았습니다.' 답변 주셔서 감사합니다. – martinnjensen

관련 문제