Fermer

juillet 12, 2022

Test de l’API : testez le téléchargement de fichiers multipartites à l’aide des frameworks Java, Spring et Cucumber

Test de l’API : testez le téléchargement de fichiers multipartites à l’aide des frameworks Java, Spring et Cucumber


Il est plus facile de tester le service de téléchargement MultipartFile dans POSTMAN simplement en sélectionnant plusieurs fichiers et en envoyant la demande. Mais pour tester en utilisant Java, nous devons écrire plusieurs lignes de code pour invoquer la requête. Dans ce blog, nous discuterons de la fonction Java pour invoquer la demande de téléchargement MultipartFile et obtenir la réponse.

Voici donc les étapes effectuées pour télécharger le fichier dans la demande.

  1. Convertir le fichier en MultipartFile
  2. GetByteArray du fichier multipart
  3. Invoquer la requête en ajoutant le byteArray au corps de la requête

Par exemple, prenons l’exemple ci-dessous du service de téléchargement de fichiers. Ce service nous permet de sélectionner n nombre de fichiers et donne le nombre de fichiers en réponse

Méthode : POST

URL : http://localhost:8080/upload
Corps :
Fichier clé
Valeur : (Sélectionner les fichiers du système)
Réponse : 200 OK
Corps de la réponse : Nombre de fichiers joints

Joindre MultipartFile dans POSTMAN

Joindre MultipartFile dans POSTMAN

Étape 1 : Convertir le fichier en MultipartFile

Tout d’abord, nous devons convertir le fichier en multipartFile. J’ai utilisé un exemple de fichier json « requestBody1.json”. Il est placé sous « src/test/ressources” dans le projet Java. La fonction ci-dessous convertit le fichier en fichier multipart en utilisant MockMultipartFile avec nom de fichier, contentType, contenu qui a le fichier en octets.

Voici les paramètres utilisés par la fonction

nom de fichier = « requestBody1.json ».

filePath= « src/test/ressources ».

contentType= « application/json ».

Voici les importations utilisées par la fonction

importer org.springframework.web.multipart.MultipartFile ;

importer java.nio.file.Files;

importer java.nio.file.Path;

importer java.nio.file.Paths ;

importer org.springframework.mock.web.MockMultipartFile ;

Ci-dessous la fonction qui convertit le fichier en MultipartFile

Publique MultipartFile getMultipartFile(String fileName) {

Chemin chemin=Chemins.obtenir(chemin du fichier);

Nom de chaîne= nom_fichier ;

String originalFileName = fileName;

Chaîne contType = contentType ;

octet[] contenu = nul;

essayer {

contenu = Fichiers.readAllBytes(chemin);

}attraper (final IOException e) {}

Résultat MultipartFile = Nouveau MockMultipartFile(name, originalFileName, contType, content);

revenir résultat;

}

Étape 2 : GetByteArray du MultipartFile

Deuxièmement, après avoir converti le fichier en multipartFile, nous devons obtenir le byteArray du multipartfile pour l’ajouter au corps, afin que nous puissions invoquer la requête avec les fichiers.

Voici les paramètres utilisés par la fonction

nom de fichier = « requestBody1.json »

contentType= « application/json »

parameterName= »file » (veuillez vous référer à la capture d’écran du facteur pour trouver le nom du paramètre)

Voici les importations utilisées par la fonction

importer org.springframework.util.LinkedMultiValueMap ;

importer org.springframework.http.HttpEntity;

Ci-dessous la fonction pour obtenir le multipartFile dans ByteArray

Publique HttpEntity<octet[]> getFileInByteArray(String fileName) jette IOException{

Fichier MultipartFile=getMultipartFile(nom_fichier);

// Récupère le byteArray du fichier

LinkedMultiValueMap headerMap = Nouveau LinkedMultiValueMap<>();

headerMap.add(« Content-disposition », « form-data; name= » + parameterName + « ; filename= » +file.getOriginalFilename());

headerMap.add(« Content-type », contentType);

HttpEntity<octet[]> doc = Nouveau HttpEntity<octet[]>(file.getBytes(),headerMap);

revenir doc;

}

Étape 3 : Appeler la requête MultipartFile

Troisièmement, ajoutez le byteArray du fichier au corps de la requête. Tout d’abord, déclarez le corps en tant que MultiValueMap. Ensuite, ajoutez le byteArray que nous avons obtenu des deux fonctions précédentes au corps. Après cela, définissez le type de contenu de l’en-tête sur Données de formulaire en plusieurs parties. Enfin, ajoutez le corps et les en-têtes à HttpEntity.

Vous trouverez ci-dessous la fonction permettant d’invoquer la demande de téléchargement multipartFile

MultiValueMap body=Nouveau LinkedMultiValueMap();

//Ajouter un fichier dans ByteArray au corps

body.add(parameterName, getFileInByteArray(file));

// Définissez les en-têtes

En-têtes HttpHeaders = Nouveau HttpHeaders();

headers.setContentType(MediaType.MULTIPART_FORM_DATA);

// Ajouter le corps et les en-têtes à HttpEntity

HttpEntity> entity= Nouveau HttpEntity<>(corps, en-têtes);

// Publier la demande

Entité de réponse<Chaîne de caractères> réponse=Nouveau RestTemplate().postForEntity(« http://localhost:8080/upload », entité, String.classer);

Étape 4 : Vérification de la réponse

La réponse que nous obtenons en invoquant la requête est stockée en tant que ResponseEntity. Enfin, nous pouvons vérifier le code de réponse et le nombre de fichiers joints. La conversion de la réponse en JSONObject (org.json) facilitera la validation de la réponse. Pour l’exemple que nous avons utilisé, nous vérifions que le code de réponse est 200 et que nous comptons 2.

assertEquals(vrai,200==response.getStatusCodeValue());

JSONObject obj= Nouveau JSONObject(response.getBody());

entier cnt=obj.getInt(« count »);

assertEquals(vrai,cnt==2);

Conclusion

Dans ce blog, vous avez réussi à joindre les fichiers de la demande et à valider la réponse.

L’URL github suivante donne le code de test utilisant le framework de concombre

https://github.com/lav16kosh/test-multipartFile-upload-api.git






Source link