अस्वीकरण के लिए "एफएमटी" गोलांग लाइब्रेरी पैकेज से निपटने का तरीका अस्वीकरण: मैं आपको एक सुखद एक्समास की कामना करता हूं और मुझे उम्मीद है कि मेरा प्रश्न आपको परेशान नहीं करेगा!सीएलआई परीक्षण
sample.go:
package main
import(
"fmt"
"os"
)
type sample struct {
value int64
}
func (s sample) useful() {
if s.value == 0 {
fmt.Println("Error: something is wrong!")
os.Exit(1)
} else {
fmt.Println("May the force be with you!")
}
}
func main() {
s := sample{42}
s.useful()
s.value = 0
s.useful()
}
// output:
// May the force be with you!
// Error: something is wrong!
// exit status 1
मैं कैसे golang परीक्षण में इंटरफेस का उपयोग करने पर अनुसंधान के एक बहुत था। लेकिन अब तक मैं अपने सिर को पूरी तरह से लपेट नहीं पा रहा था। कम से कम मैं नहीं देख सकता कि जब मुझे "नकली" (इस शब्द का उपयोग करने के लिए माफ़ी) गोलांग std की आवश्यकता होती है तो इंटरफेस मेरी मदद कैसे करते हैं। लाइब्रेरी पैकेज जैसे "एफएमटी"।
- उपयोग ओएस/कार्यकारी कमांड लाइन इंटरफेस का परीक्षण करने के
- रैप fmt पैकेज तो मैं नियंत्रण है और उत्पादन की जाँच करने में सक्षम हूँ:
मैं दो स्थितियों के साथ आया था तार
मुझे दोनों परिदृश्य पसंद नहीं हैं:
- मुझे वास्तविक कमांड लाइन के माध्यम से एक ठोस और निष्पादक (नीचे देखें) के माध्यम से जाने का अनुभव होता है। पोर्टेबिलिटी के मुद्दे भी हो सकते हैं।
- मेरा मानना है कि यह जाने का तरीका है, लेकिन मुझे डर है कि एफएमटी पैकेज को लपेटना बहुत काम हो सकता है (कम से कम परीक्षण के लिए समय पैकेज को एक गैर-तुच्छ कार्य (https://github.com/finklabs/ttime) को बदलने के लिए लपेटना)।
वास्तविक प्रश्न यहां: क्या कोई और (बेहतर/सरल/मूर्खतापूर्ण) तरीका है? नोट: मैं इसे शुद्ध गोलांग में करना चाहता हूं, मुझे अगले परीक्षण ढांचे में दिलचस्पी नहीं है।
cli_test.go:
package main
import(
"os/exec"
"testing"
)
func TestCli(t *testing.T) {
out, err := exec.Command("go run sample.go").Output()
if err != nil {
t.Fatal(err)
}
if string(out) != "May the force be with you!\nError: this is broken and not useful!\nexit status 1" {
t.Fatal("There is something wrong with the CLI")
}
}
वाह पर एक नज़र डालें, मुझे नहीं पता था कि पाईक एक पुस्तक लिखी। क्या आप शीर्षक या पुस्तक के संदर्भ को बता सकते हैं। मुझे आपकी सलाह पसंद है। मैं इस तरह अपने कोड को दोबारा करने और वापस रिपोर्ट करने जा रहा हूं। आपको बहुत - बहुत धन्यवाद! – mark
गो प्रोग्रामिंग भाषा http://www.gopl.io/ एलन ए। डोनोवन · ब्रायन डब्ल्यू। केर्निजन प्रकाशित 26 अक्टूबर, 2015 पेपरबैक में और 20 नवंबर में ई-बुक एडिसन-वेस्ले; 380pp; आईएसबीएन: 978-0134190440 – Amnon
मैंने आपकी सलाह के बाद कोड को दोबारा प्रतिक्रिया दी। मुझे उम्मीद है कि आपको कोई फर्क नहीं पड़ता कि मैंने यह स्पष्ट करने के लिए आपके उत्तर में जो कुछ भी आया था, मैंने जोड़ा। अगर मैंने कुछ गलत समझा तो कृपया इसे बदलें। वैसे भी os.Exit के साथ एक समस्या प्रतीत होता है। – mark