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!