60 votes

Factory Girl - quel est le but?

C'est moins technique et plus de curiosité, mais cela a été de me tuer.

Quel est le but de l'Usine de Fille dans mes tests rspec alors que je pourrais simplement utiliser before(:each) des blocs? Je suis très vert avec des Rails, quand j'allais dans le tutoriel, il se sent comme la seule différence entre l'Usine de Fille et un before(:each) est que l'usine prépare la création d'un objet à l'extérieur de l'épreuve.

Est-ce exact? J'ai ce sentiment tenace que je suis en manque de quelque chose. J'ai pensé demander assaisonné RoR dev pour les réponses.

63voto

Pan Thomakos Points 19946

Des perles comme la Factory Girl et Sham vous permettent de créer des modèles pour les valides et les objets réutilisables. Ils ont été créés en réponse à des montages où les dossiers qui devaient être chargés dans la base de données. Ils permettent de plus d'options de personnalisation lorsque vous instancier les objets et ils visent à assurer que vous avez un objet valide de travailler avec. Ils peuvent être utilisés n'importe où dans vos tests et vos avant et après le test de crochets.

before(:each), avant(:all), après(:each) et après(:all) ont tous pour but de vous donner un endroit pour faire l'installation et le démontage qui sera partagé entre un groupe de test. Par exemple, si vous prévoyez de créer un nouvel utilisateur valide pour chaque test, alors vous aurez envie de le faire dans le before(:each) crochet. Si vous allez être en compensation de certains fichiers du système de fichiers, vous voulez le faire dans un avant de crochet. Si vos tests à tous de créer un fichier tmp et que vous souhaitez la supprimer après votre test, vous allez faire de votre après(:each) ou après(:all) crochet.

La façon dont ces deux concepts diffèrent, c'est que les Usines qui ne sont pas destinées à créer des crochets autour de vos tests, ils visent à créer valide Ruby des objets et des documents, de sorte que vous pouvez garder votre création de l'objet souple et SÈCHE. Avant et après les crochets sont destinés à l'installation et le démontage des tâches qui sont partagés dans un exemple de groupe, de sorte que vous pouvez garder votre installation et le démontage du code SEC.

17voto

Srdjan Pejic Points 4744

FactoryGirl remplace les appareils lors des tests. De cette façon, vous ne devrez pas garder les appareils à jour lorsque vous modifiez le modèle de données. Les appareils peuvent également avoir tendance à devenir trop compliqués à mesure que vous ajoutez des cas extrêmes.

FactoryGirl génère des données à la volée et l'ajout et la suppression de champs sont beaucoup plus faciles. En outre, vous pouvez l’utiliser dans la configuration de la même manière que vous utiliseriez les appareils.

Est-ce que cela le rend plus clair?

6voto

John Beynon Points 23163

De plus, les définitions de luminaires sont globales dans l’ensemble de votre application. Les usines peuvent être locales: les données spécifiques à un scénario de test isolé sont donc configurées pour ce contexte particulier et non dans un seul fichier de fixtures globales.

Ce livre couvre très bien le sujet si vous voulez plus de matière à lire

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X