2017-04-20 11 views
1

누군가가 나에게 아이디어를 줄 수 있기를 바랍니다.AutoFixture AutoMoq 인터페이스로 조롱 된 객체를 전송하십시오.

  1. 그것은 인터페이스 IEntity을 구현

    나는 다음을 만족하는 조롱 객체를 생성해야합니다.

  2. EntityBase에 이미있는 기본 구현을 사용합니다.
  3. 속성은 AutoFixture를 통해 자동 생성됩니다.

나는 몇 가지 대안을 시도하고이 코드와 함께 종료 :

는 모의 유형이 이미 초기화되었습니다

fixture.Customize(new AutoConfiguredMoqCustomization()); 
 

 
fixture.Customize<IEntity>(c => c.FromFactory(
 
() => fixture.Create<Mock<EntityBase>>().As<IEntity>().Object));

그러나, 나는 다음과 같은 예외를 얻을 Object 속성에 액세스합니다. 그 전에 인터페이스를 추가해야합니다. 대신 것,

fixture.Customizations.Insert(0, new TypeRelay(typeof(IEntity), typeof(EntityBase))); 

이제 AutoFixture이있는 모든 시간이 IEntity의 인스턴스를 만들 : :(

답변

2

당신은 EntityBase의 생성 인스턴스 만족해야 IEntity에 대한 요청 AutoFixture를 알려줄 수있는 TypeRelay을 사용할 수 있습니다 차례로, AutoConfiguredMoqCustomization에 MOQ 덕분에 의해 처리됩니다, EntityBase의 인스턴스를 만듭니다.

릴레이 꽤 편리하고 a few of them 내장이 있습니다. 사실, 그들은 전체를 활성화 자동 모킹 기능 relaying에 의해 인터페이스 및 추상 클래스가 조롱 라이브러리에 요청됩니다.