首页 > 解决方案 > 2个不同属性的虚假模拟数据相同的值

问题描述

伪造的模拟数据相同的值对于 2 个不同的属性,是否可以让 2 个属性在 fluent api 中具有相同的值。

var users = new Faker<User>()
   .StrictMode(false)
   .RuleFor(o => o.Id, f => orderIds++)
   .RuleFor(o => o.UserName, f => f.Person.FullName) // This needs to be same as the next property
   .RuleFor(o => o.NormalizedUserName, f => f.Person.FullName) // This should be same but uppercase

想要生成的数据:

[
  {
   userName: "Ivan Horvat",
   normalizedUserName: "IVAN HORVAT"
  },
  {
   userName: "John Doe",
   normalizedUserName: "JOHN DOE"
  }
]

我希望生成的每个实体都具有相同的实体UserNameNormalizedUsername但每个实体都有自己的实体。

标签: c#asp.net-core.net-corebogus

解决方案


RuleFor(Prop, (f, usr) =>)您也可以通过使用重载来拥有两个具有相同值的属性。

void Main()
{
   int orderIds = 0;
   var users = new Faker<User>()
      .StrictMode(false)
      .RuleFor(o => o.Id, f => orderIds++)
      .RuleFor(o => o.UserName, f => f.Person.FullName) // This needs to be same as the next property
      .RuleFor(o => o.NormalizedUserName, (f, usr) => usr.UserName.ToUpper()); // This should be same but uppercase

   users.Generate(3).Dump();
}

public class User{
   public int Id{get;set;}
   public string UserName{get;set;}
   public string NormalizedUserName {get;set;}
}

结果


推荐阅读