Go: Scheinrückgabewert der Funktion im Unit-Test

王林
Freigeben: 2024-02-09 23:39:09
nach vorne
1212 Leute haben es durchsucht

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
    }
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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

number 9 is on the left-hand side of the street.
Nach dem Login kopieren

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)
    }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!