【问题标题】:AutoFixture customization for PagedListPagedList 的 AutoFixture 自定义
【发布时间】:2016-11-25 21:26:20
【问题描述】:

我正在使用 AutoFixture 进行测试,但我的接口返回 IPagedList 而不是 IList。问题是 AutoFixture 会生成空的分页列表。我是 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);

【问题讨论】:

    标签: autofixture pagedlist


    【解决方案1】:

    The order of customizations matter。我没有尝试过,但它可能有助于重新排序自定义:

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

    此外,自 AutoFixture 3.0 以来,您不应该需要 MultipleCustomization

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多