2016-02-19 11 views
6

मैं MailBoxProcessor का उपयोग कर समांतर इकाई परीक्षण धावक का निर्माण कर रहा हूं।MailfoxProcessor को Printf.TextWriterFormat पास करना संभव है?

मुझे परीक्षण के लिए प्रिंट स्टेटमेंट कतारबद्ध करने की आवश्यकता है, इसलिए परीक्षण समाप्त होने के बाद मैं उन्हें प्रिंट कर सकता हूं। मुझे पता है कि एक स्ट्रिंग कैसे भेजना है और एक सूची बनाना है ताकि मैं उन्हें प्रिंट कर सकूं, लेकिन इससे मुझे sprintf का उपयोग करने के लिए मजबूर किया जाता है और इसे मेरे प्रिंट फ़ंक्शन में पाइप किया जाता है और जैसा कि मैं चाहूंगा उतना साफ नहीं है।

[1..200] 
|> List.iter (fun i -> 
    sprintf "Test %i" i &&& fun ctx -> 
    ctx.printfn <| sprintf "A guid %A" (ng()) 
    ctx.printfn <| sprintf "I am test %i" i 
    ctx.printfn <| sprintf "A guid %A" (ng())) 

आप यहाँ पूर्ण कोड देख सकते हैं: https://github.com/lefthandedgoat/prunner/blob/master/Program.fs#L36-L41

और वह ctx देखना एक printfn विधि है कि एक स्ट्रिंग और यह पोस्ट एक ही मेलबॉक्स है कि एक परीक्षण जब तक संदेशों को कतार में लगने के साथ एक वस्तु है किया जाता है, फिर उन पर लूप और उन्हें प्रिंट करता है।

मेरा लक्ष्य इस

[1..200] 
|> List.iter (fun i -> 
    sprintf "Test %i" i &&& fun ctx -> 
    ctx.printfn "A guid %A" (ng()) 
    ctx.printfn "I am test %i" i 
    ctx.printfn "A guid %A" (ng())) 

उत्तर

7

आपका प्रश्न पूरी तरह स्पष्ट नहीं है की तरह ctx.printfn देखने के लिए है, लेकिन आप kprintf के माध्यम से अपने लक्ष्य को प्राप्त करने में सक्षम हो सकता है:

member x.printfn fmtStr = 
    Printf.kprintf (fun msg -> reporter.Post(Print(msg, x.TestId))) fmtStr 
+0

अच्छा, मैं इसके बारे में नहीं पता था! यह भविष्य में काम में आ जाएगा, धन्यवाद। – Roujo

+0

यह काम करता है! बहुत बहुत धन्यवाद, मैं अब kprintf के बारे में पढ़ूंगा! – lefthandedgoat

संबंधित मुद्दे