Maison  >  Article  >  développement back-end  >  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
Patricia Arquetteoriginal
2024-10-26 17:32:30882parcourir

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>

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>

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>

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

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!

Déclaration:
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