2016-11-26 34 views
6

我使用Bogus库来生成测试数据。如何在C#中使用虚假库生成字符串列表?

,比如我有一个类:

public class Person 
{ 
    public int Id {get; set;} 
    public List<string> Phones {get; set;} // PROBLEM !!! 
} 

var Ids = 0; 
var test = new Faker<Person>() 
    .RuleFor(p => p.Id, f => Ids ++) 
    .RuleFor(p => p.Phones , f => /*HOW ?????*/) // How can I return random list of PhoneNumbers ??? 

任何人都可以指导我如何在伪造的生成预定义骗子的名单?

回答

5

伪造库中有选择集合的随机元素一个辅助方法:

public T PickRandom<T>(IEnumerable<T> items) 

该方法采用IEnumerable,这意味着你可以创建一个数组或List<string>握住你的预定义的数据。您可以结合使用它集合初始生成您的电话清单是这样的:

var phones = new List<string> { "111-111-111", "222-222-222", "333-333-333" }; 

var Ids = 0; 
var test = new Faker<Person>() 
    .RuleFor(p => p.Id, f => Ids++) 
    // generate 2 phones 
    .RuleFor(p => p.Phones, f => new List<string> { f.PickRandom(phones), f.PickRandom(phones) }); 

如果要生成您的列表中有更多的项目,你不希望你的初始化器变大(或者你希望通过编程改变量),你可以使用LINQ:

// generate 8 phones 
.RuleFor(p => p.Phones, f => Enumerable.Range(1, 8).Select(x => f.PickRandom(phones)).ToList()); 

// generate 1 to 5 phones 
.RuleFor(p => p.Phones, f => Enumerable.Range(1, f.Random.Int(1, 5)).Select(x => f.PickRandom(phones)).ToList()); 

你可以找到更多的readme项目的GitHub的页面上。

相关问题