使用虚假数据预填充对象

时间:2017-07-05 21:17:27

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

有没有办法在没有明确指定属性规则的情况下使用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();

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

1 个答案:

答案 0 :(得分:1)

经过一些挖掘,我找到了一个与.Net Core兼容的优秀库,可用于以非常有效的方式生成随机的真实测试数据,而无需明确规定类属性的规则。如果有人想要替换标准.Net中优秀的NBuilder库,GenFu库可能是您.Net核心单元/集成测试的答案。