2016-11-26 14 views
6

Używam biblioteki Bogus do generowania danych testowych.Jak wygenerować listę ciągów z biblioteką Bogus w C#?

na przykład mam klasy:

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 ??? 

Czy ktoś mnie prowadził Jak wygenerować listę predefiniowanych faker w podrobiony?

Odpowiedz

5

Sfałszowaną biblioteka ma metodę pomocnika za zbieranie losowy element kolekcji:

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

Metoda bierze IEnumerable, co oznacza, można utworzyć tablicę lub List<string> trzymać swoje predefiniowanych danych. Można go używać w połączeniu z inicjator zbiórki wygenerować listę telefonu tak:

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) }); 

Jeśli chcesz wygenerować wiele więcej pozycji na liście, a ty nie chcesz inicjator rośnie duża (lub chcą zmieniać ilość programowo) można używać 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()); 

Możesz dowiedzieć się więcej w readme na gitHub stronie projektu.

Powiązane problemy