Heim  >  Artikel  >  Backend-Entwicklung  >  Go: Scheinrückgabewert der Funktion im Unit-Test

Go: Scheinrückgabewert der Funktion im Unit-Test

王林
王林nach vorne
2024-02-09 23:39:091207Durchsuche

Go: Scheinrückgabewert der Funktion im Unit-Test

In der Softwareentwicklung ist Unit-Test eine sehr wichtige Aufgabe, die Entwicklern dabei helfen kann, die Qualität und Zuverlässigkeit des Codes sicherzustellen. In der Go-Sprache können wir einige Bibliotheken und Technologien verwenden, um den Rückgabewert einer Funktion für bessere Unit-Tests zu simulieren. In diesem Artikel stellt Ihnen der PHP-Editor Xiaoxin die Methode zur Implementierung von Funktionssimulations-Rückgabewerten in der Go-Sprache vor, um Entwicklern dabei zu helfen, Unit-Tests besser durchzuführen und die Qualität und Wartbarkeit des Codes zu verbessern.

Frageninhalt

Ich habe ein kleines Skript in Golang erstellt (mein erstes Golang-Projekt).

Beispiel:

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

Ich möchte für jede Funktion einen kleinen Unit-Test erstellen. Für „main()“ möchte ich den Rückgabewert der Funktion „foo()“ verspotten, da ich nicht „foo()“, sondern den Rest des main()-Codes testen werde.

Ich suche nach einer einfachen Möglichkeit, Rückgabewerte zu stubbeln/zu verspotten. Ich habe gerade das Verspotten mit Strukturen oder Schnittstellen usw. entdeckt. Aber ich verwende diese Elemente nicht im Code (es ist ein einfaches Projekt).

Lösung

Verwenden Sie ein realistisches, minimales, reproduzierbares Beispiel: So erstellen Sie ein minimales, reproduzierbares Beispiel.

Zum Beispiel in 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.

Verwenden Sie das Go-Testpaket für Funktionen sollten keinen zu testenden Code enthalten. side函数进行单元测试。您还可以直接对 iseven 函数进行单元测试。 main

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

Das obige ist der detaillierte Inhalt vonGo: Scheinrückgabewert der Funktion im Unit-Test. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen