मैं एक साधारण कार्य है परीक्षण करने के लिए मैं परीक्षण करना चाहते हैं:कैसे एक समारोह के उत्पादन (stdout/stderr) जाओ इकाई में परीक्षण
func (t *Thing) print(min_verbosity int, message string) {
if t.verbosity >= minv {
fmt.Print(message)
}
}
लेकिन यह कैसे मैं परीक्षण कर सकते हैं समारोह वास्तव में मानक आउटपुट में भेजा जाने वाला? Test::Output क्या मैं पर्ल में चाहते हैं करता है। मैं जानता हूँ कि मैं (के रूप में वर्णित here) जाओ में भी ऐसा ही करने के लिए सभी मेरे अपने बॉयलरप्लेट लिख सकते हैं:
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!")
}
लेकिन वह हर एक परीक्षा के लिए अतिरिक्त काम का एक बहुत कुछ है। मुझे आशा है कि इसे संभालने के लिए एक और मानक तरीका है, या शायद एक अमूर्त पुस्तकालय है।
शायद यह है कि मैं क्या करूँगा, क्योंकि यह @ ऐनार-जी द्वारा प्रदान किए गए एक सामान्य समाधान है, जिसके लिए मुझे यह आवश्यक है कि मैं कुछ कोड को नियंत्रित कर सकूं जो कुछ आउटपुट कर सकता है। – Flimzy