Maison > développement back-end > Golang > Go : valeur de retour simulée de la fonction dans le test unitaire

Go : valeur de retour simulée de la fonction dans le test unitaire

王林
Libérer: 2024-02-09 23:39:09
avant
1244 Les gens l'ont consulté

Go : valeur de retour simulée de la fonction dans le test unitaire

Dans le développement de logiciels, les tests unitaires sont une tâche très importante, qui peut aider les développeurs à garantir la qualité et la fiabilité du code. Dans le langage Go, nous pouvons utiliser certaines bibliothèques et technologies pour simuler la valeur de retour d'une fonction afin de meilleurs tests unitaires. Dans cet article, l'éditeur PHP Xiaoxin vous présentera la méthode d'implémentation des valeurs de retour de simulation de fonction dans le langage Go pour aider les développeurs à mieux effectuer les tests unitaires et à améliorer la qualité et la maintenabilité du code.

Contenu de la question

J'ai créé un petit script en golang (mon premier projet golang).

Exemple :

package main

import (
    "fmt"
    "math/rand"
)

func main() {
    i := rand.Intn(10)
    foo := foo(i)

    if foo {
        fmt.Printf("%d is even!", i)
        // more code ... 
    } else {
        fmt.Printf("%d is odd!", i)
        // more code ... 
    }
}

func foo(i int) bool {
    if i%2 == 0 {
        return true
    } else {
        return false
    }
}
Copier après la connexion

Je souhaite créer un petit test unitaire pour chaque fonction. Pour "main()", je veux me moquer de la valeur de retour de la fonction "foo()" puisque je ne testerai pas "foo()" mais le reste du code main().

Je recherche un moyen simple de stuper/simuler les valeurs de retour. Je viens de découvrir le moqueur avec des structures ou des interfaces etc. Mais je n'utilise pas ces éléments dans le code (c'est un projet simple).

Solution

Utilisez un exemple réaliste, minimal et reproductible : Comment créer un exemple minimal et reproductible.

Par exemple, en go,

package main

import (
    "fmt"
    "math/rand"
)

func iseven(i int) bool {
    return i%2 == 0
}

func side(n int) string {
    if iseven(n) {
        return "right"
    } else {
        return "left"
    }
}

func main() {
    n := 1 + rand.intn(10)
    hand := side(n)
    fmt.printf("number %d is on the %s-hand side of the street.\n", n, hand)
}
Copier après la connexion

https://www.php.cn/link/7c63a554c36ea63c77723a472b7ca20f

number 9 is on the left-hand side of the street.
Copier après la connexion

Utilisez le package de test go pour les fonctions side函数进行单元测试。您还可以直接对 iseven 函数进行单元测试。 main ne doivent contenir aucun code à tester unitairement.

package main

import (
    "testing"
)

func TestSide(t *testing.T) {
    n := 7
    got := side(n)
    want := "left"
    if got != want {
        t.Errorf("side(%d) = %s; want %s", n, got, want)
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal