Maison > développement back-end > Golang > Comment tester les applications Go qui lisent à partir de Stdin : un guide avec des lecteurs et des écrivains simulés

Comment tester les applications Go qui lisent à partir de Stdin : un guide avec des lecteurs et des écrivains simulés

Patricia Arquette
Libérer: 2024-10-26 17:32:30
original
962 Les gens l'ont consulté

How to Test Go Applications That Read from Stdin: A Guide with Mock Readers and Writers

Test des applications Go qui écrivent sur Stdin

Ce guide montre comment écrire des cas de test Go qui interagissent avec des applications de lecture stdin. Prenons l'exemple d'application ci-dessous :

<code class="go">package main

import (
    "bufio"
    "fmt"
    "io"
    "os"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    for {
        fmt.Print("> ")
        bytes, _, err := reader.ReadLine()
        if err == io.EOF {
            os.Exit(0)
        }
        fmt.Println(string(bytes))
    }
}</code>
Copier après la connexion

Création d'un scénario de test

Pour tester la fonctionnalité stdin de cette application, nous définissons une fonction distincte qui lit à partir d'un io.Reader et écrit dans un io.Writer :

<code class="go">func testFunction(input io.Reader, output io.Writer) {
    // Your test logic here...
}</code>
Copier après la connexion

Modification de la fonction principale

Dans la fonction principale, nous appelons la fonction testFunction avec stdin et stdout comme arguments :

<code class="go">func main() {
    testFunction(os.Stdin, os.Stdout)
}</code>
Copier après la connexion

Écrire le cas de test

Dans notre cas de test, nous pouvons maintenant tester directement la fonction test à l'aide d'un io.Reader et d'un io.Writer simulés :

<code class="go">func TestInput(t *testing.T) {
    input := "abc\n"
    output := &bytes.Buffer{}

    inputReader := bytes.NewReader([]byte(input))
    testFunction(inputReader, output)

    if got := output.String(); got != input {
        t.Errorf("Wanted: %v, Got: %v", input, got)
    }
}</code>
Copier après la connexion

En utilisant cette approche, vous pouvez tester efficacement les applications qui écrivent sur stdin, isolant ainsi la logique de test des subtilités de la gestion stdin et stdout dans la fonction principale.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal