Fixtures

Feature Fixtures :

Chaque fois que behat exécute une nouvelle fonctionnalité, l’état de l’application est réinitialisé par défaut : il n’y a qu’un seul utilisateur administrateur, une organisation, une unité commerciale et des rôles par défaut dans la base de données.

Les tests de fonctionnalités doivent s’appuyer sur les données disponibles dans l’application après l’exécution de la commande oro: install. Dans la plupart des cas, cela ne suffit pas.

Ainsi, vous avez deux façons d’obtenir plus de données dans le système: en utilisant des fixtures de base ou des fixtures alice.

Fixtures basiques

Vous pouvez créer un nombre quelconque d’entités dans les tests de fonctionnalités. FixtureContext devine la classe d’entité, crée le nombre nécessaire d’objets et utilise faker pour remplir les champs requis lorsque leur valeur n’a pas été spécifiée explicitement.

Vous utilisez à la fois les références faker et les références d’entité dans les appareils en ligne.

 Given the following contacts:
   | First Name | Last Name | Email     |
   | Joan       | Anderson  | <email()> |
   | Craig      | Bishop    | <email()> |
   | Jean       | Castillo  | <email()> |
   | Willie     | Chavez    | <email()> |
   | Arthur     | Fisher    | <email()> |
   | Wanda      | Ford      | <email()> |
 And I have 5 Cases
 And there are 5 calls
 And there are two users with their own 7 Accounts
 And there are 3 users with their own 3 Tasks
 And there is user with its own Account

Fixtures Alice

Parfois, vous avez besoin de nombreuses entités différentes avec des relations complexes. Dans de tels cas, vous pouvez utiliser des fixtures Alice. Alice est une bibliothèque qui vous permet de créer facilement des fixtures au format yml.

NOTE :

Voir la documentation d’Alice pour plus d’informations.

Les fixtures doivent être situés dans le répertoire {BundleName}/Tests/Behat/Features/Fixtures. Pour charger une fixture avant l’exécution des tests de fonctionnalité, ajoutez une balise (annotation) qui est construite à l’aide de la convention suivante @fixture-BundleName:fixture_file_name.yml, par exemple:

 @fixture-OroCRMBundle:mass_action.yml
 Feature: Mass Delete records

Il est également possible de charger des fixtures pour tout autre bundle disponible pour l’application.

Par exemple:

 @fixture-OroUserBundle:user.yml
 @fixture-OroOrganizationBundle:BusinessUnit.yml
 Feature: Adding attributes for workflow transition

De plus, Alice vous permet d’inclure des fichiers via l’extension, vous pouvez donc importer des fichiers à partir d’autres bundles:

 include:
     - '@OroCustomerBundle/Tests/Behat/Features/Fixtures/CustomerUserAmandaRCole.yml'

Vous devez toujours inclure les fixtures d’autres bundles avec des entités qui ont été déclarées dans ce bundle

Références d’entités

Vous pouvez utiliser des références aux entités dans les fixtures de base et alice.

{Bundle}\Tests\Behat\ReferenceRepositoryInitializer est utilisé pour créer des références pour des objets qui existent déjà dans la base de données.

  • Il est interdit de modifier ou d’ajouter de nouvelles entités dans le Initializer.
  • Il doit implémenter ReferenceRepositoryInitializerInterface et ne doit pas avoir de dépendances.
  • Pour afficher toutes les références, utilisez la commande bin/behat --available-references.

Les références les plus utilisées sont:

  • @admin - Utilisateur Admin
  • @adminRole - Administrator role
  • @organization - Default organization
  • @business_unit - Default business unit