Заполнение свойства объекта одним из ограниченного набора символов с использованием автофиксации - PullRequest
0 голосов
/ 11 октября 2019

Я использую AutoFixture для генерации списка объектов ProblemClass, которые будут использоваться для тестирования. ProblemClass определяется как

public class ProblemClass
{
    int Id {get; set;}
    string ProblemField {get; set;}
}

ProblemField может содержать одно из 3 значений «A», «B» или «C». Я не могу изменить ProblemClass, поэтому я не могу сделать ProblemField перечислением.

Как я могу заставить AutoFixture заполнять свойство ProblemField каждого объекта в моем списке случайным образом буквой "A", "B" или "C"?

(например, myList[0].ProblemField - это "A", myList[1].ProblemField - это "C" и т. Д.)

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Вы можете настроить способ генерации ProblemClass.

Это должно работать:

fixture
    .Customize<ProblemClass>(ob =>
        ob
            .With(
                x => x.ProblemField,
                (int i) => "ABC".Substring(i % 3, 1)));

Дополнительная информация:

Из таблицы

Отмечает блог

0 голосов
/ 11 октября 2019

Хотелось бы что-нибудь подобное для вас?

public class ProblemClass
{
    static Random r = new Random();
    const string options = "ABC";

    public ProblemClass(int id)
    {
        Id = id;
        ProblemField = options[r.Next(options.Length)].ToString();
    }

    public int Id { get; }
    public string ProblemField { get; }
}
...