【问题标题】:Pre-populate an object with fake data使用虚假数据预填充对象
【发布时间】:2017-12-09 16:59:28
【问题描述】:

有没有一种方法可以在不明确指定属性规则的情况下使用 Faker 用假数据预先填充对象。我发现为每个属性指定规则以使用随机数据填充对象需要花费太多时间。根据属性数据类型自动为我执行此操作的方法怎么样。使用 NBuilder 很容易实现这一点,遗憾的是不支持 .Net Core。

这是我用来填充 CategoryViewModel 的代码:

var category = PopulateCategoryViewModelFaker().Generate();

    private Faker<CategoryViewModel> PopulateCategoryViewModelFaker()
    {
        var faker = new Faker<CategoryViewModel>();
        //faker.StrictMode(true);
        faker.RuleFor(x => x.DateCreated, f => DateTime.Now);
        faker.RuleFor(x => x.Description, f => f.Lorem.Sentence(2));
        faker.RuleFor(x => x.ParentCategory, f => null);
        faker.RuleFor(x => x.Status, f => null);
        faker.RuleFor(x => x.Title, f => f.Lorem.Sentence(2));
        faker.RuleFor(x => x.CategoryId, f => Guid.NewGuid());
        faker.RuleFor(x => x.CreatedByUser, f => null);
        faker.RuleFor(x => x.CrumbPath, f => null);
        faker.RuleFor(x => x.StatusId, _ctx.CategoryStatuses.First().StatusId);
        faker.RuleFor(x => x.CreatedByUserId, x => Guid.NewGuid());

        return faker;
    }

我会看起来像:

        var cat = new CategoryViewModel();
        cat  = new Faker<CategoryViewModel>().Generate();

上面创建了一个对象,但是没有假数据。

【问题讨论】:

  • NBuilder, FTW.
  • NBuilder 是很棒的选择,但它不支持 .Net Core。我正在寻找一种与 NBuilder 完全相同的工具,但适用于 .Net Core
  • 在 GitHub here 上的 repo 中将 NBuilder 移植到 .NET Core 存在问题。
  • 看起来 NBuilder 现在也支持 .NET Core:@MarianDolinský 提到的 issue 似乎已解决。

标签: c# unit-testing .net-core faker


【解决方案1】:

经过一点点挖掘,我发现了一个与.Net Core 兼容的优秀库,可以非常有效地生成随机真实测试数据,而无需明确指定类属性的规则。如果有人会寻找在标准 .Net 中表现出色的 NBuilder 库的替代品,GenFu 库可能是您的 .Net 核心单元/集成测试的答案。

【讨论】:

    猜你喜欢
    • 2020-11-12
    • 2018-03-14
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    相关资源
    最近更新 更多