Exemple de test de payload XML - 6.5

Talend Data Services Platform Studio Guide utilisateur

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

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 composant cFile afin d'afficher sa vue Basic settings dans l'onglet Component.

  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 composant cConvertBodyTo afin d'afficher sa vue Basic settings dans l'onglet Component.

  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 composant cSetBody afin d'afficher sa vue Basic settings dans l'onglet Component.

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

    Dans le champ Expression, saisissez "/Customers/Customer[Address/State='MA']" pour extraire les clients dont l' État 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 pour sauvegarder votre 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 dans l'onglet Composant.

  2. Dans la liste Dependencies, ajoutez xmlunit-1.6.jarIl peut être récupéré sur le site http://www.xmlunit.org/. 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 composant cProcessor afin d'afficher sa vue Basic settings dans l'onglet Component.

  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 le résultat identique 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 premier composant cDataset afin d'afficher sa vue Basic settings dans l'onglet Component.