2016-07-25 4 views
1

내가 쉽게 그래서 같은 방법을 작성하여 데이터 객체의 인스턴스를 생성 할 수 있습니다 AutoFixture를 사용하는 모든 특성을 작성하지 AutoFixture을 사용할 수 있습니다 미래에 올지도 모르는 생성자의 모든 변경 사항을 처리하지만이 경우에는 (필터 모음이기 때문에) 모든 속성을 채 웁니다.어떻게 객체를 생성하지만,

AutoFixture에 개체를 만들지 만 속성을 채우지 못하게 할 방법이 있습니까?

필자는 필드를 건너 뛰는 방법이 없다는 것을 알고 있습니다.하지만 필자는 빈 개체로 시작하여 테스트에 필요한 경우 추가하는 대신 계속 추가해야한다는 것을 의미합니다.

답변

4

할 수있는 방법이 많이 있습니다.

var fi = fixture.Build<FilterItems>().OmitAutoProperties().Create(); 

당신은 또한 항상 특정 유형의 자동 속성을 생략 할 수 fixture 인스턴스를 사용자 정의 할 수 있습니다 :

당신은 일회성 작업으로 그것을 할 수

fixture.Customize<FilterItems>(c => c.OmitAutoProperties()); 

또는 당신은 할 수 자동 속성을 완전히 사용 중지합니다.

fixture.OmitAutoProperties = true; 

기기 중 하나 AutoFixture.Xunit2 같은 접착제 라이브러리를 따끔, 당신은 또한 선언적으로 그것을 할 수 있습니다 :

[AutoData] 
public void MyTest([NoAutoProperties]FilterItems fi) 
{ 
    // Use fi here... 
} 
+2

와우, 난 그냥 인 Pluralsight에 고급 과정을보고 있었다. 4 분 안에 저자 자신의 답변을 얻으려면 놀랍지도 않다! 대답 주셔서 감사합니다, 나는이 기능이 기본값을 가지고 있으므로 기본값 ()의 값이 될 값을 건너 뛰지 않는 속성을 건너 뛸 것임을 내게 암시하는 것으로 보이는 AutoProperties 문서를 완전히 오해하고 있습니다. – Robba

1

표본을 만들기 전에 _fixture.OmitAutoProperties = true;으로 전화해야합니다.