2016-11-25 55 views
1

我正在使用AutoFixture進行測試,但是我的接口返回IPagedList而不是IList。問題是AutoFixture生成空的分頁列表。我是AutoFixture的新手,所以可能我的解決方案(順便說一下不能正常工作)不是最好的。看看我做了什麼:AutoFixture爲PagedList定製

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()和大於零? 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()); 

而且,你不應該需要MultipleCustomization因爲AutoFixture 3.0。