Exemple de test de payload XML

Talend Data Fabric Studio Guide utilisateur

EnrichVersion
6.5
EnrichProdName
Talend Data Fabric
task
Qualité et préparation de données
Création et développement
EnrichPlatform
Studio Talend

Cette section vous présente un exemple de test d'une Route traitant des messages XML. Le fichier XML d'exemple est utilisé comme source du message :

<Customers>
	<Customer>
		<Number>1</Number>
		<FirstName>Fred</FirstName>
		<LastName>Landis</LastName>
		<Address>
			<Street>Oakstreet</Street>
			<City>Boston</City>
			<ZIP>23320</ZIP>
			<State>MA</State>
		</Address>
	</Customer>
	<Customer>
		<Number>2</Number>
		<FirstName>Michelle</FirstName>
		<LastName>Butler</LastName>
		<Address>
			<Street>First Avenue</Street>
			<City>San-Francisco</City>
			<ZIP>44324</ZIP>
			<State>CA</State>
		</Address>
	</Customer>
	<Customer>
		<Number>3</Number>
		<FirstName>Ted</FirstName>
		<LastName>Little</LastName>
		<Address>
			<Street>Long Way</Street>
			<City>Los-Angeles</City>
			<ZIP>34424</ZIP>
			<State>CA</State>
		</Address>
	</Customer>
</Customers>

Construire la Route

  1. Depuis la Palette, glissez-déposez un cFile, un cConvertBodyTo, un cSetbody et un cLog dans l'espace de modélisation graphique.

  2. Reliez les composants à l'aide d'un lien Row > Route.

  3. Double-cliquez sur le cFile pour ouvrir sa vue Basic settings.

  4. Dans le champ Path, saisissez le chemin d'accès à la source du message.

    Dans le champ fileName, saisissez le nom de la source du message.

  5. Double-cliquez sur le cConvertBodyTo pour ouvrir sa vue Basic settings.

  6. Dans le champ Target Class Name, saisissez le nom de la classe cible, String.class dans ce scénario.

  7. Double-cliquez sur le cSetBody pour ouvrir sa vue Basic settings.

  8. Dans la liste Language, sélectionnez XPATH.

    Dans le champ Expression, saisissez "/Customers/Customer[Address/State='MA']" pour extraire le client dont l'État (State) est MA.

  9. Laissez les paramètres par défaut du cLog pour enregistrer les échanges de messages.

  10. Appuyez sur les touches Ctrl+S afin de sauvegarder la Route.

Tester la Route

Créer le scénario de test

  1. Sélectionnez les composants cConvertBodyTo et cSetbody dans la Route. Cliquez-droit sur l'un des composants sélectionnés et sélectionnez Create Test Case dans le menu contextuel.

  2. L'assistant [Create Route Test Case] s'ouvre. Saisissez un nom pour le scénario de test dans le champ Name et renseignez l'objectif et la description dans les champs correspondants. Cliquez sur Next.

  3. La vue [Define Test Skeleton details] de l'assistant s'ouvre, sélectionnez les options comme affiché ci-dessous pour utiliser un composant cDataset en tant que producteur de messages ou un cMock afin de vérifier le résultat. Cliquez sur Finish.

  4. Le scénario de test est créé et ouvert dans l'espace de modélisation graphique. Il doit ressembler à ceci :

  5. Ajoutez un cMock, un cConfig et un cProcessor à la Route en saisissant le nom du composant directement dans l'espace de modélisation graphique.

Configurer le scénario de test

  1. Double-cliquez sur le composant cConfig pour ouvrir sa vue Basic settings.

  2. Dans la liste Dependencies, ajoutez xmlunit-1.6.jar, qui peut être obtenu depuis le site http://www.xmlunit.org/ (en anglais). Notez que vous devez ajouter cette dépendance lors du test des messages XML. Cela permet de valider le contenu des messages XML par rapport au schéma.

  3. Double-cliquez sur le cProcessor pour ouvrir sa vue Basic settings.

  4. Dans la zone Import, saisissez le code suivant pour importer les bibliothèques externes :

    import org.custommonkey.xmlunit.Diff;
    import org.custommonkey.xmlunit.XMLUnit;
    import java.io.FileReader;
    import java.io.File;

    Dans la zone Code, saisissez le code suivant pour comparer le fichier XML reçu et le fichier XML cible et retourner identical ou different.

    String in_xml = exchange.getIn().getBody(String.class);
    
    FileReader reference_file1_reader = new FileReader(new File(context.reference_file1));
    
    Diff diff = XMLUnit.compareXML(in_xml, reference_file1_reader);
    
    exchange.getIn().setBody(diff.identical() ? "identical" : "different");
  5. Double-cliquez sur le cDataset pour ouvrir la vue Basic settings.

  6. Dans la table Arguments, la ligne comportant la valeur context.input_file1 a automatiquement été ajoutée. Ajoutez une autre ligne "----------------" pour traiter l'entrée en un message.

    Notez que, lorsque vous utilisez le cDataset en tant que producteur de messages, si le message d'entrée contient de multiples lignes, vous devez ajouter un séparateur de lignes dans la vue Basic settings du cDataset. Le séparateur de lignes doit être le même que celui du fichier d'entrée, afin que le cDataset divise chaque message et effectue le test correctement. S'il n'y a qu'un message composé de plusieurs lignes dans le fichier d'entrée, vous devez également configurer le séparateur de lignes dans la vue Basic settings du cDataset, pour pouvoir le traiter comme un message. Si le séparateur de lignes n'est pas spécifié, chaque ligne de l'entrée sera traitée comme un message.

  7. Double-cliquez sur le premier cMock pour ouvrir sa vue Basic settings.

  8. Cochez la case Simulate et sélectionnez cProcessor_1 pour produire le message.

  9. Double-cliquez sur le second cMock pour ouvrir sa vue Basic settings.