recherche
Maisondéveloppement back-endGolangComment tester efficacement les fonctions du gestionnaire de gin avec des simulations ?

How to Effectively Unit Test Gin Handler Functions with Mocks?

Mocks pour tester unitairement les fonctions du gestionnaire Gin

Test de la fonctionnalité c.BindQuery

Pour tester les opérations impliquant la requête HTTP dans Gin, initialisez un *http .Request et définissez-le sur le contexte Gin. Spécifiquement pour tester c.BindQuery, initialisez l'URL et l'URL de la requête.RawQuery :

import (
    "net/http/httptest"

    "github.com/gin-gonic/gin"
)

func mockGin() (*gin.Context, *httptest.ResponseRecorder) {
    w := httptest.NewRecorder()
    c, _ := gin.CreateTestContext(w)

    // Test request
    req := &http.Request{
        URL: &url.URL{},
        Header: make(http.Header),
    }

    // Test query
    testQuery := weldprogs.QueryParam{/* init fields */}

    q := req.URL.Query()
    for _, s := range testQuery.Basematgroup_id {
        q.Add("basematgroup_id", s)
    }

    // Set URL.RawQuery
    req.URL.RawQuery = q.Encode()

    // Set request to Gin context
    c.Request = req

    return c, w
}

Mocking JSON Binding

Référez-vous à cette ressource pour obtenir des conseils sur la simulation de liaison JSON.

Services de tests

Des services comme services.WeldprogService.GetMaterialByFilter(&queryParam) ne peut pas être testé tel quel. Pour les rendre testables :

  • Convertissez-les en interfaces.
  • Injectez-les en tant que dépendances dans le gestionnaire.
  • Définissez-les comme valeurs de contexte Gin.

Approche de valeur d'interface et de contexte :

type services interface {
    GetMaterialByFilter(*weldprogs.QueryParam) (*weldprogs.MaterialByFilter, error)
}

func mockWeldprogService(service services) {
    return func(c *gin.Context) {
        c.Set("svc_context_key", service)
    }
}

func TestGetMaterialByFilter(t *testing.T) {
    w := httptest.NewRecorder()
    c, _ := gin.CreateTestContext(w)

    c.Use(mockWeldprogService(&mockSvc{}))

    GetMaterialByFilter(c)

    // ...
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Apprenez GO BYTE SLICE Manipulation: Travailler avec le package 'octets'Apprenez GO BYTE SLICE Manipulation: Travailler avec le package 'octets'May 16, 2025 am 12:14 AM

TheBytespackageingOsSesentialForMipulatingBytesLeSeseChectively.1) usebytes.jointoconcatenatelices.2) employés.bufferfordynamicdataconstruction.3) utilisentIndexandContainsForSearching.4)

Comment utiliser le package 'Encoding / Binary' pour encoder et décoder les données binaires en Go (étape par étape)Comment utiliser le package 'Encoding / Binary' pour encoder et décoder les données binaires en Go (étape par étape)May 16, 2025 am 12:14 AM

Tousethe "Encoding / Binary" PackageingoforeCcodingandDeccodingBinaryData, suivitheSesteps: 1) ImportThepackageandCreatAbuffer.2) usebinar

Comment utilisez-vous le package 'Encoding / Binary' pour encoder et décoder les données binaires en Go?Comment utilisez-vous le package 'Encoding / Binary' pour encoder et décoder les données binaires en Go?May 16, 2025 am 12:13 AM

Le package d'encodage / binaire fournit un moyen unifié de traiter les données binaires. 1) Utilisez des fonctions Binary.Write et Binary. 2) Les types personnalisés peuvent être gérés en mettant en œuvre l'interface binaire.ByteOrder. 3) Faites attention à la sélection de Endianness, à l'alignement des données et à la gestion des erreurs pour assurer l'exactitude et l'efficacité des données.

GO PACKAGE CONSTAGES: Est-il complet pour chaque cas d'utilisation?GO PACKAGE CONSTAGES: Est-il complet pour chaque cas d'utilisation?May 16, 2025 am 12:09 AM

L'ensemble des chaînes de Go ne convient pas à tous les cas d'utilisation. Il fonctionne pour les opérations de chaîne les plus courantes, mais des bibliothèques tierces peuvent être nécessaires pour les tâches NLP complexes, la correspondance d'expression régulière et l'analyse de format spécifique.

Quelles sont les limites du package de chaîne Go?Quelles sont les limites du package de chaîne Go?May 16, 2025 am 12:05 AM

Le package des chaînes dans GO a des limitations d'utilisation des performances et de la mémoire lors de la gestion d'un grand nombre d'opérations de chaîne. 1) Problèmes de performance: Par exemple, les chaînes. Replace et Strings.replaceALL sont moins efficaces lorsqu'ils traitent des remplacements de chaînes à grande échelle. 2) Utilisation de la mémoire: Étant donné que la chaîne est immuable, de nouveaux objets seront générés à chaque opération, ce qui entraîne une augmentation de la consommation de mémoire. 3) Traitement Unicode: il n'est pas suffisamment flexible lors de la gestion des règles Unicode complexes et peut nécessiter l'aide d'autres packages ou bibliothèques.

Manipulation de cordes en Go: Master le package 'Strings'Manipulation de cordes en Go: Master le package 'Strings'May 14, 2025 am 12:19 AM

La maîtrise du package des chaînes en langue GO peut améliorer les capacités de traitement du texte et l'efficacité de développement. 1) Utilisez la fonction CONTAINS pour vérifier les sous-chaînes, 2) Utilisez la fonction d'index pour trouver la position de sous-chaîne, 3) Join de la fonction Splice Splice Slices de chaîne, 4) Remplacer la fonction pour remplacer les sous-chaînes. Soyez prudent pour éviter les erreurs courantes, comme ne pas vérifier les chaînes vides et les problèmes de performances de fonctionnement de grande chaîne.

Aller des conseils et astuces de package 'Strings'Aller des conseils et astuces de package 'Strings'May 14, 2025 am 12:18 AM

Vous devez vous soucier du package des chaînes dans GO, car il peut simplifier la manipulation des chaînes et rendre le code plus clair et plus efficace. 1) Utilisez des chaînes.join pour épisser efficacement les chaînes; 2) Utilisez des chaînes. 3) Trouver des positions de sous-chaîne à travers des chaînes.index et des chaînes.LastIndex; 4) Utilisez des chaînes.replaceALL pour remplacer les chaînes; 5) Utilisez des chaînes. 6) Vérifiez toujours les entrées pour éviter les résultats inattendus.

Package 'Strings' dans Go: votre go-to pour les opérations de chaînePackage 'Strings' dans Go: votre go-to pour les opérations de chaîneMay 14, 2025 am 12:17 AM

ThestringsPackageingOsOssentialForeFicientsStringManipulation.1) itofferssimpleyetpowerfunctionsfunctionsfortaskslikeCheckingSubStringSandjoiningStrings.2) ithandlesunicodewell, with-ctionslikestrings.Fieldsforwhitespace-separis

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
<🎜> Obscur: Expedition 33 - Comment obtenir des catalyseurs de chrome parfaits
2 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel