2016-11-25 11 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()より小さく、ゼロより大きくするにはどうすればよいですか? 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を必要はありません。

関連する問題