Autofixture에서 다른 소스를 사용하여 개체를 만드는 방법은 무엇입니까?

자이로 알파로

다음과 같은 것이 있습니다.

public class ModelEntity : Entity
{
    public override int Id { get; set; }

    public string FileName { get; set; }
}

public class DataTransferObject
{
    public int Id { get; set; }

    public string FileName { get; set; }
}

그리고 다음과 같이하고 싶습니다.

var model = _fixture.Create<ModelEntity>(); 
var dto = _fixture.Create<DataTransferObject>().FillWith(model);

지금은 다음을 수행하고 있지만 올바른 방법인지 확실하지 않습니다.

var model = _fixture.Create<ModelEntity>(); 
var dto = model.AsSource().OfLikeness<DataTransferObject>().CreateProxy();
마크 시만

AutoFixture에는 이와 같은 기능이 없지만 여기에서 배울 수있는 더 좋은 것이 있다고 생각합니다.

AutoFixture는 원래 TDD (Test-Driven Development)를위한 도구로 구축되었으며 TDD는 모두 피드백 에 관한 입니다. GOOS 의 정신에 따라 테스트를 들어야합니다. 테스트를 작성하기 어려운 경우 API 디자인을 고려해야합니다. AutoFixture는 이러한 종류의 피드백을 증폭시키는 경향이 있으며 여기에서도 그럴 수 있습니다.

인스턴스의 DataTransferObject으로에 채울 수 있어야하는 것 같습니다 ModelEntity. 이것은 일종의 매핑 이 API에 귀중한 추가가 될 수 있음을 시사 할 수 있습니까?

이러한 유형이 이미 결합 된 방식에 따라 클래스에 프로젝션 메소드를 추가하는 것을 고려할 있습니다 ModelEntity.

public class ModelEntity : Entity
{
    public override int Id { get; set; }

    public string FileName { get; set; }

    public DataTransferObject ToDataTransferObject()
    {
        return new DataTransferObject
        {
            Id = this.Id,
            FileName = this.FileName
        };
    }
}

그러나이 방법의 단점은 두 유형을 서로 연결한다는 것입니다.

바람직하지 않은 경우 ModelEntity인스턴스를 DataTransferObject객체에 매핑 할 수있는 전용 매퍼 서비스를 대신 도입 할 수 있습니다 .

헤아릴 수없는 이유로 테스트중인 시스템에 이러한 매퍼를 도입하고 싶지 않은 경우에도 테스트 프로젝트에서 재사용 가능한 서비스로 추가 할 수 있습니다.

그러한 매퍼를 직접 작성하고 싶지 않다면 AutoMapper 와 같은 것을 그 목적으로 사용하는 것을 고려할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

@XmlElements를 사용하여 동일한 목록에 다른 개체를 만드는 방법은 무엇입니까?

분류에서Dev

greenDAO를 사용하여 다른 개체 내부에 개체를로드하는 방법은 무엇입니까?

분류에서Dev

다른 보고서를 사용하여 SSRS에서 보고서를 만드는 방법은 무엇입니까?

분류에서Dev

PHP Slim-다른 경로에 대해 여러 앱 개체를 사용하는 방법은 무엇입니까?

분류에서Dev

메서드를 만들고 다른 클래스에서 사용하는 방법은 무엇입니까?

분류에서Dev

C #을 사용하여 다른 개체에서 개체를 가져 오는 LINQ 쿼리를 작성하는 방법은 무엇입니까?

분류에서Dev

다른 객체를 사용하여 자바 스크립트에서 객체 배열을 만드는 방법은 무엇입니까?

분류에서Dev

다른 클래스 Java의 객체로 매개 변수를 사용하여 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

메소드 매개 변수를 사용하여 객체에 액세스하는 방법은 무엇입니까?

분류에서Dev

Java에서 다른 클래스의 set 메소드를 사용하는 방법은 무엇입니까?

분류에서Dev

다른 공개 키를 사용하여 서버에서 서버로 scp하는 방법은 무엇입니까?

분류에서Dev

Angular js를 사용하여 다중 페이지 응용 프로그램에서 두 개의 다른 헤더를 만드는 방법은 무엇입니까?

분류에서Dev

다른 스레드에서 V8 개체를 만든 다음 nodejs 범위로 다시 복사하는 방법은 무엇입니까?

분류에서Dev

WebDriverWait을 사용하여 다른 요소 셀레늄에서 요소를 얻는 방법은 무엇입니까?

분류에서Dev

Racket에서 람다 만 사용하여 재귀를 만드는 방법은 무엇입니까?

분류에서Dev

PostgreSQL에서 필드를 사용하여 다각형을 만드는 방법은 무엇입니까?

분류에서Dev

Typescript에서 다른 개체의 키로 개체를 업데이트하는 방법은 무엇입니까?

분류에서Dev

다른보기의 대상 요소에 스토리 보드를 사용하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 다른 인스턴스의 클래스 이름을 사용하여 인스턴스를 만드는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 한 div에서 다른 div로 드래그하는 방법은 무엇입니까?

분류에서Dev

SAPUI5의 서로 다른 환경에서 두 개의 서로 다른 주소에 대한 리소스를 사용하는 방법은 무엇입니까?

분류에서Dev

curl / wget을 사용하여 다른 소스에서 동일한 파일의 일부를 다운로드하는 방법은 무엇입니까?

분류에서Dev

WPF에서 다른 프로젝트의 리소스를 사용하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 쿼리를 사용하여 자동 완성을 만드는 방법은 무엇입니까?

분류에서Dev

factorygirls에서 id = user.id를 사용하여 개체 User를 만든 후 Freelancer와 User라는 두 개체를 만드는 방법은 무엇입니까?

분류에서Dev

다른 목록에서 일치하는 키를 사용하여 개체 목록을 정렬하는 방법은 무엇입니까?

분류에서Dev

다른 메서드를 호출하여 한 개체의 메서드에서 스레드를 시작하는 방법은 무엇입니까?

분류에서Dev

QStyledItemDelegate를 활용하여 QTreeWidget에서 높이가 다른 QTreeWidgetItems를 사용하는 방법은 무엇입니까?

분류에서Dev

devise를 사용하여 다른 사용자에게 권한을 부여하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    @XmlElements를 사용하여 동일한 목록에 다른 개체를 만드는 방법은 무엇입니까?

  2. 2

    greenDAO를 사용하여 다른 개체 내부에 개체를로드하는 방법은 무엇입니까?

  3. 3

    다른 보고서를 사용하여 SSRS에서 보고서를 만드는 방법은 무엇입니까?

  4. 4

    PHP Slim-다른 경로에 대해 여러 앱 개체를 사용하는 방법은 무엇입니까?

  5. 5

    메서드를 만들고 다른 클래스에서 사용하는 방법은 무엇입니까?

  6. 6

    C #을 사용하여 다른 개체에서 개체를 가져 오는 LINQ 쿼리를 작성하는 방법은 무엇입니까?

  7. 7

    다른 객체를 사용하여 자바 스크립트에서 객체 배열을 만드는 방법은 무엇입니까?

  8. 8

    다른 클래스 Java의 객체로 매개 변수를 사용하여 메서드를 호출하는 방법은 무엇입니까?

  9. 9

    메소드 매개 변수를 사용하여 객체에 액세스하는 방법은 무엇입니까?

  10. 10

    Java에서 다른 클래스의 set 메소드를 사용하는 방법은 무엇입니까?

  11. 11

    다른 공개 키를 사용하여 서버에서 서버로 scp하는 방법은 무엇입니까?

  12. 12

    Angular js를 사용하여 다중 페이지 응용 프로그램에서 두 개의 다른 헤더를 만드는 방법은 무엇입니까?

  13. 13

    다른 스레드에서 V8 개체를 만든 다음 nodejs 범위로 다시 복사하는 방법은 무엇입니까?

  14. 14

    WebDriverWait을 사용하여 다른 요소 셀레늄에서 요소를 얻는 방법은 무엇입니까?

  15. 15

    Racket에서 람다 만 사용하여 재귀를 만드는 방법은 무엇입니까?

  16. 16

    PostgreSQL에서 필드를 사용하여 다각형을 만드는 방법은 무엇입니까?

  17. 17

    Typescript에서 다른 개체의 키로 개체를 업데이트하는 방법은 무엇입니까?

  18. 18

    다른보기의 대상 요소에 스토리 보드를 사용하는 방법은 무엇입니까?

  19. 19

    파이썬에서 다른 인스턴스의 클래스 이름을 사용하여 인스턴스를 만드는 방법은 무엇입니까?

  20. 20

    jquery를 사용하여 한 div에서 다른 div로 드래그하는 방법은 무엇입니까?

  21. 21

    SAPUI5의 서로 다른 환경에서 두 개의 서로 다른 주소에 대한 리소스를 사용하는 방법은 무엇입니까?

  22. 22

    curl / wget을 사용하여 다른 소스에서 동일한 파일의 일부를 다운로드하는 방법은 무엇입니까?

  23. 23

    WPF에서 다른 프로젝트의 리소스를 사용하는 방법은 무엇입니까?

  24. 24

    두 개의 다른 쿼리를 사용하여 자동 완성을 만드는 방법은 무엇입니까?

  25. 25

    factorygirls에서 id = user.id를 사용하여 개체 User를 만든 후 Freelancer와 User라는 두 개체를 만드는 방법은 무엇입니까?

  26. 26

    다른 목록에서 일치하는 키를 사용하여 개체 목록을 정렬하는 방법은 무엇입니까?

  27. 27

    다른 메서드를 호출하여 한 개체의 메서드에서 스레드를 시작하는 방법은 무엇입니까?

  28. 28

    QStyledItemDelegate를 활용하여 QTreeWidget에서 높이가 다른 QTreeWidgetItems를 사용하는 방법은 무엇입니까?

  29. 29

    devise를 사용하여 다른 사용자에게 권한을 부여하는 방법은 무엇입니까?

뜨겁다태그

보관