클래스가 있습니다. Foo
이라는 값 유형이므로 Equals
/GetHashCode()
메서드를 재정의합니다. 별도의 테스트 픽스처에서 Foo의 모든 속성이 평등을 위해 사용 된 속성뿐만 아니라 적절하게 설정되었다고 주장하고 싶습니다. 이러한 이유로 내 테스트 단언문은 특별히 ShouldBeEquivalentTo
메서드를 사용합니다.이 설명서에서는 "두 개체 그래프 모두 해당 개체의 유형과 관계없이 동일한 값을 가진 속성의 이름이 동일한 경우"두 문서가 동일하다고 간주합니다.FluentAssertions : ShouldBeEquivalentTo 메서드는 여전히 Object.Equals()를 호출합니까?
그러나 ShouldBeEquivalentTo
메서드는 Foo.Equals
메서드를 호출하고 실제 결과를 얻은 다음 ShouldBeEquivalentTo
약속과 일치하는 반사 기반 속성을 단락 처리합니다.
이 예상되는 동작입니까? 그렇다면 FA 소스를 검사 할 때이 동작을 쉽게 변경할 방법이 없음을 알았습니다 (IEquivalencyStep
은 내부로 선언되었습니다). 이 문제를 해결할 다른 방법이 있습니까?
편집 : 데니스 : 예, 제가 비교할 두 개체는 같은 유형입니다. 요약하면 Foo 클래스에서 Equals
을 재정의했지만 FA가 내 단위 테스트에 평등이라는이 개념을 사용하는 것을 원하지 않습니다.
나는 당신이하려는 것을 완전히 이해하지 못했습니다. 그 객체가 ShouldBeEquivalentTo()를 호출하고있는 객체와 비슷합니까? –
나중에 참조하기 위해 Dennis는이 문제를 다음 주소로 해결했습니다. http://fluentassertions.codeplex.com/discussions/428950, 2.1에서 동작이 변경되었다고 말했습니다. – argaz
Argaz, 답변으로 의견을 보내면 받아 들일 것입니다. –