Comment transformer les Spec-tableau de flux de données en valeurs différentes
J'ai besoin de transformer Spec-tableau de flux de données que nous obtenons via table.CreateInstance()
ou table.CreateSet()
. Je suis à l'aide de Spec flux de DB d'essai et, dans certains cas, le Tableau des valeurs de champ doit être mappé à différentes valeurs de DB tables de stocker des codes au lieu des valeurs, nous sommes entrés dans les tableaux de fichiers de fonctionnalité. Je ne veux pas d'inclure les codes dans les fichiers de fonctionnalité, car elle réduit la lisibilité. Par exemple, Si je suis entré Unique pour l'état comme mentionné ci-dessous, je veux qu'il soit mappé ou de se transformer en S dans l'objet de transfert de données /POCO. Quelle est la meilleure approche ? Merci à l'avance.
Given I entered the following data into the new account form:
| Name | Birthdate | Status |
| John Butcher| 2/2/1902 | Single |
OriginalL'auteur Rasika | 2015-07-31
Vous devez vous connecter pour publier un commentaire.
J'ai commencé à utiliser le "Test de Modèles", qui s'est terminée par les modèles de vue pour mon spec tests de flux.
À l'aide de votre exemple:
Le Modèle Du Domaine:
Et le "Modèle de Test":
L'étape de définition:
Pour cet exemple particulier, il pourrait être plus que vous avez besoin, mais j'ai trouvé ce modèle fonctionne bien lorsque les données dans le Scénario doit être dans un format lisible par l'homme, qui se traduit en une formule complexe dans le Modèle de Domaine.
OriginalL'auteur Greg Burghardt
Je ne suis pas au courant de toute façon de le faire automatiquement, donc je ne peux que penser à deux possibilités.
CreateInstance
ouCreateSet
méthodes et au lieu de faire tous les de la cartographie manuellement, mais l'encapsuler dans un[StepArgumentTransformation]
J'étais conscient buter StepArgumentTransformation , mais mon équipe n'a pas à utiliser qui. Ne voulait pas de la logique de transformation sur l'étape de la définition que nous sommes le maintien d'une bibliothèque séparée. Fini à l'aide d'une méthode d'Extension à la classe de la Table comme CreateSetWithValueTransfer<T>().
OriginalL'auteur Sam Holder
Que Sam l'a souligné, nous pouvons utiliser StepArgumentTransformarion ou une approche similaire à ci-dessous. Ajouter si d'autre à l'intérieur de l'extension de méthodes si vous voulez la carte Value1 à Code1 pour un type et Valeur1 au CodeX dans un autre type à l'aide de
typeof(T).Name.Equals(typeof(yourtype).Name)
que la conditionOriginalL'auteur Rasika
J'ai posé une question similaire, avec un autre exemple ici. Semble comme il devrait être possible d'appliquer StepArgumentTransforms à CreateInstance/CreateSet, mais n'a pas encore été mise en œuvre pour les types de base déjà obtenir transformé en la table de conversion.
Dans votre cas (contrairement à la mienne), je pense que vous pouvez le faire assez facilement avec un custom ValueRetriever.
OriginalL'auteur Subjective Reality