2012-02-09 3 views

답변

6

이 문제를 해결하는 가장 좋은 방법은이라는 이름의 이라는 특정 속성에 익명 숫자 값의 문자열 표현을 할당하는 create a convention based custom value generator입니다.

public class Foo 
{ 
    public string StringThatReallyIsANumber { get; set; } 
} 

사용자 정의 값 생성기는 다음과 같이 보일 것이다 :

그래서,이 같은 클래스를 가지고 가정, 예를 제공하기 위해 여기

public class StringThatReallyIsANumberGenerator : ISpecimenBuilder 
{ 
    public object Create(object request, ISpecimenContext context) 
    { 
     var targetProperty = request as PropertyInfo; 

     if (targetProperty == null) 
     { 
      return new NoSpecimen(request); 
     } 

     if (targetProperty.Name != "StringThatReallyIsANumber") 
     { 
      return new NoSpecimen(request); 
     } 

     var value = context.CreateAnonymous<int>(); 

     return value.ToString(); 
    } 
} 

중요한 점은 사용자 정의이다 생성기는 StringThatReallyIsANumber이라는 속성 (이 경우에는 ) 만 대상으로합니다.

당신의 테스트에서 사용하기 위해, 당신은 단순히 Fixture.Customizations 컬렉션을 통해 Fixture 인스턴스에 추가해야합니다 :

var fixture = new Fixture(); 
fixture.Customizations.Add(new StringThatReallyIsANumberGenerator()); 

var anonymousFoo = fixture.CreateAnonymous<Foo>(); 
+0

고맙습니다, 나는 수업을 약간 업데이트, 그래서 생성자는 이름을 사용 매개 변수로 특성의. 따라서 나는 다른 장소에서도 수업을 사용할 수 있습니다. – Krimson

+0

@Krimson Cool. 내가 도울 수있어서 기뻐요 :) –

+1

이것은 GUID 기반 기본값 대신 특정 문자열 속성에 유효한 URL을 생성해야하는 경우에도 유용했습니다. –

관련 문제