2009-05-17 18 views
5

मैं Moq 3.x का उपयोग करने की कोशिश कर रहा हूं, यह शानदार काम करता है। हालांकि, मुझे एक समस्या है जिसे मैं हल नहीं कर सकता हूं।कार्रवाई तर्क के साथ Moq

var passingTestSpec = new Mock<ITestSpec>(); 
passingTestSpec 
    .Setup(m => m.Run(null)) 
    .Returns(true); 

Action<string, string> fakeAction = 
    (expected, actual) => { throw new Exception("Should not run"); }; 

Assert.IsTrue(passingTestSpec.Object.Run(fakeAction)); 

मेरे समस्या यह है कि passingTestSpec.Object.Run पर कोई कॉल (... कुछ कार्रवाई ...) झूठे रिटर्न है:

public interface ITestSpec 
{ 
    bool Run(Action<string, string> onIncorrectResponse); 
} 

को देखते हुए मैं निम्नलिखित कोशिश कर रहा हूँ। ऐसा लगता है कि Moq लाइब्रेरी सेटअप() कॉल में चलाए गए तर्क() में दिए गए तर्क से कार्रवाई करने की कोशिश कर रही है, और विफल हो जाती है। यह वास्तव में कोई फर्क नहीं पड़ता कि मैंने रन() कॉल में क्या कदम रखा है ... यह अभी भी झूठी लौट रहा है।

कोई भी विचार?

[संपादित करें] मैंने अभी कुछ खोजा है; अगर मैं

.Setup(m => m.Run(fakeAction)) 

परीक्षण पास के साथ सेटअप लाइन को प्रतिस्थापित करता है। हालांकि, मुझे नहीं पता कि Run() विधि किस क्रिया के साथ बुलाया जाएगा, इसलिए यह कोई समाधान नहीं है। किसी को इसके बारे में पता है। क्या कार्यों के लिए कोई समकक्ष है?

उत्तर

13

क्या बुराई है:

It.IsAny<Action<string, string>>() 
+0

LOL मैं पता होना चाहिए किसी समाधान खोजने के लिए मैं पर इस :(धन्यवाद कई घंटे बर्बाद सोचने के लिए जा रहा है ..., मैं उस के साथ जाना होगा, यह बेहतर है मेरी तुलना में। –