2015-04-08 31 views
5

Son zamanlarda golang için bir birim testi yazmayı umuyorum. Fonksiyon aşağıdaki gibidir.Golang'da io.writer nasıl test edilir?

func (s *containerStats) Display(w io.Writer) error { 
    fmt.Fprintf(w, "%s %s\n", "hello", "world") 
    return nil 
} 

"func Ekran" ın sonucunu nasıl test edebilirim "Merhaba dünya"?

cevap

11

Sadece kendi io.Writer numaranızı girip, yazdıklarınızın neler beklediğinizle eşleştiğini test edebilirsiniz. bytes.Buffer, io.Writer için iyi bir seçimdir çünkü çıktıyı yalnızca arabelleğinde saklar.

func TestDisplay(t *testing.T) { 
    s := newContainerStats() // Replace this the appropriate constructor 
    var b bytes.Buffer 
    if err := s.Display(&b); err != nil { 
     t.Fatalf("s.Display() gave error: %s", err) 
    } 
    got := b.String() 
    want := "hello world\n" 
    if got != want { 
     t.Errorf("s.Display() = %q, want %q", got, want) 
    } 
} 
+0

Yardımlarınız için çok teşekkür ederim! Sadece istediğim bu! – wonderflow

+1

Bu yazım hatası: 'Yazma' yönteminin bir işaretçi alıcısına sahip olması nedeniyle, Görüntülü aramada * veya * 'b: = yeni (bytes.Buffer)' 'da' b' seçeneğine sahip olmanız gerekir. –

+1

Teşekkürler Dave, sabit. –

İlgili konular