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.
- Convertir le fichier en MultipartFile
- GetByteArray du fichier multipart
- 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
É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.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
//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
// 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