Un test de la fonction de sortie (stdout/stderr) à Passer des tests unitaires

J'ai une fonction simple, je veux tester:

func (t *Thing) print(min_verbosity int, message string) {
    if t.verbosity >= minv {
        fmt.Print(message)
    }
}

Mais comment puis-je tester cette fonction envoie sur la sortie standard? Test::Sortie fait ce que je veux en Perl. Je sais que je pourrais écrire mes propres réutilisable à faire de même dans le jeu de Go (comme décrit ici):

orig = os.Stdout
r,w,_ = os.Pipe()
thing.print("Some message")
var buf bytes.Buffer
io.Copy(&buf, r)
w.Close()
os.Stdout = orig
if(buf.String() != "Some message") {
    t.Error("Failure!")
}

Mais c'est beaucoup de travail supplémentaire pour chaque test. J'espère qu'il y a de plus standard, ou peut-être une abstraction de la bibliothèque pour gérer cela.

InformationsquelleAutor Flimzy | 2014-11-07