2016-11-25 3 views
1

AutoFixture를 사용하여 테스트를 수행하고 있지만 IList 대신 IPagedList가 반환됩니다. 문제는 AutoFixture가 빈 페이지리스트를 생성한다는 것입니다. 나는 AutoFixture를 처음 사용하기 때문에 내 솔루션 (적절하게 작동하지 않음)이 가장 좋지 않을 것입니다. 내가 무슨 짓을했는지 참조 :PagedList에 대한 AutoFixture 사용자 정의

public class PagedListCustomization<TEntity> : ICustomization 
    { 
     public void Customize(IFixture fixture) 
     { 
      fixture.Customize<IPagedList<TEntity>>(c => c.FromFactory(
       () => 
       { 
        var list = fixture.CreateMany<TEntity>(); 
        int pageSize = fixture.Create<int>(); 
        int pageIndex = fixture.Create<int>(); 
        return list.ToPagedList(pageIndex, pageSize); 
       })); 
     } 
    } 


....... 


var fixture = new Fixture() 
.Customize(new AutoMoqCustomization()) 
.Customize(new MvcCustomization()) 
.Customize(new MultipleCustomization()) 
.Customize(new PagedListCustomization<TEntity>()); 

문제는 페이징 목록은 아직 비어하지만 난 아마 pageIndex가 너무 크기 때문에 그것이라고 생각합니다.

내 질문은 : 1) pageIndex를 list.Count()보다 작고 0보다 크게 관리하려면 어떻게해야합니까? 2) 이것을 설정하는 더 적절한 방법이 있습니까?

정말 고마워요! 내가 지금까지를 사용하지만,하고하는 것은 과잉 같습니다 : AutoFixture에 대해 너무 작은 문서는

업데이트 ...이

int pageSize = new Generator<int>(fixture).First(n => n > 0 && n <= list.Count); 
       int pageIndex = new Generator<int>(fixture).First(n => n > 0 && n < list.Count/pageSize); 

답변

0

The order of customizations matter. 나는 시도하지 않은, 그러나 그것은 아마도 사용자 지정을 재정렬하는 데 도움 것 :

var fixture = new Fixture() 
    .Customize(new PagedListCustomization<TEntity>()) 
    .Customize(new AutoMoqCustomization()) 
    .Customize(new MvcCustomization()); 

또한, 당신이 AutoFixture 3.0 이후 MultipleCustomization을 필요가 없습니다.