Могу ли я указать случайное семя для Bogus?
Я использую Bogus для генерации тестовых данных.
Есть ли способ установить семя, которое он использует, чтобы он генерировал те же тестовые данные, в том же порядке?
Например, этот тест не пройден:
var person1 = new Bogus.Person();
var person2 = new Bogus.Person();
Assert.AreEqual(person1.FullName, person2.FullName);
Тем не менее, есть ли способ сбросить семя, чтобы оно не было, то есть:
Bogus.Config.SetSeed(1);
var person1 = new Bogus.Person();
Bogus.Config.SetSeed(1);
var person2 = new Bogus.Person();
Assert.AreEqual(person1.FullName, person2.FullName);
2 ответа
Решение
В файле readme есть пример этого:
//Set the randomzier seed if you wish to generate repeatable data sets.
Randomizer.Seed = new Random(8675309);
Однако установка начального числа означает, что результаты генератора случайных чисел согласованы. Чтобы сделать то, что вы хотите, вам нужно сбросить начальное число перед каждым вызовом, чтобы получить те же результаты.
Другой ответ изменит глобальное семя, что не очень хорошо:
- Есть изменение, вы не можете запускать тесты параллельно
- Есть изменение, что тестовые коды зависят друг от друга.
Рекомендуемый способ - изменить семя самого Faker:
Для неуниверсальных:
var seed = 8675309;
var faker = new Faker()
faker.Random = new Randomizer(seed );
Общий
Faker
есть помощник,
UseSeed
:
var seed = 8675309;
var faker = new Faker<MyClass>().UseSeed(seed);