Maison  >  Article  >  développement back-end  >  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

王林
王林avant
2024-02-09 23:39:091207parcourir

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
    }
}

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)
}

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

number 9 is on the left-hand side of the street.

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)
    }
}

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer