2010-12-06 3 views

Répondre

4

NBuilder ne prend pas en charge le remplissage automatique des types de référence à ce moment.

Toutefois, il est possible de faire ce que vous voulez en utilisant un générateur pour créer chaque type de référence.

Au moment où vous faites probablement ceci:

var person = Builder<Person> 
    .CreateNew() 
    .Build(); 

Assert.That(person.Name, Is.EqualTo("Name1")); 
Assert.That(person.Address, Is.Null); 

Qu'est-ce que vous voulez faire est la suivante:

var address = Builder<Address> 
    .CreateNew() 
    .Build(); 

var person2 = Builder<Person> 
    .CreateNew() 
    .With(x => x.Address = address) 
    .Build(); 

Assert.That(person2.Name, Is.EqualTo("Name1")); 
Assert.That(person2.Address, Is.Not.Null); 
Assert.That(person2.Address.Street, Is.EqualTo("Street1")); 
Assert.That(person2.Address.Zipcode, Is.EqualTo("Zipcode1")); 
1

Une limitation que j'ai trouvé avec NBuilder est que les données qu'il génère pour chaînes de cette manière est qu'il est basé sur les noms de propriété par exemple Name1, Street1, Zipcode1 comme vous le voyez ci-dessus. Je me suis retrouvé en utilisant .Phrase(), mais il n'a pas généré de données aléatoires sensibles et des éléments comme les e-mails ont dû être assemblés.

Vous pouvez télécharger Faker.Net via le nuget link here or use Visual Studio et le faire créer des données fantaisie dans le cadre de votre commande de construction. Vous pouvez ensuite l'utiliser pour créer vos objets Person Mock (en utilisant à nouveau Faker/NBuilder).

var addresses = Builder<Address>.CreateListOfSize(20) 
    .All() 
     .With(c => c.Street = Faker.StreetName().First()) 
     .With(c => c.State = Faker.UsState().First()) 
     .With(c => c.ZipCode = Faker.ZipCode().First()) 
    .Build(); 

This blog post détails d'autres exemples.

Questions connexes