2012-02-24 12 views
5

यहाँ बुलाया गया था है कि मैं क्या है:राइनो Mocks IgnoreArguments() और परीक्षण करता है, तो एक लैम्ब्डा सही ढंग से

public interface IDataCenterMsmqWriter 
    { 
     void UpdateData(Action<DataCenterWcfProxy> action); 
    } 

प्रणाली परीक्षण के अंतर्गत:

public class WcfService : IWcfService 
{ 
    private readonly IDataCenterMsmqWriter _writer; 

    public WcfService(IDataCenterMsmqWriter writer) 
    { 
     _writer = writer; 
    } 

    #region IWcfService members 

    public void SendData(SomeData data) 
    { 
     _writer.UpdateData(d => d.SendVarData(data)); 
    } 

    // other members of IWcfService elided 
    #endregion 
} 

मैं राइनो Mocks रूप _writer स्थापित करने के साथ किस प्रकार जाँच कर एक मॉक और परीक्षण करना चाहते हैं कि सही कार्य को अद्यतनडेटा विधि में बुलाया गया था।

मैं इस की कोशिश की है:

// _writer is setup as a mock 
var data = new SomeData(); 
_wcfServiceSUT.SendData(data); 
_writer.AssertWasCalled(d => d.UpdateData(x => x.SendVarData(data)); 

काम नहीं करता।

मैं जोड़ सकते हैं:

, पी => p.IgnoreArguments() AssertWasCalled अंदर UpdateData के बाद, लेकिन है कि मुझे यह सुनिश्चित करने के SendVarData डेटा चर के साथ बुलाया गया था नहीं देता है मैं क्या चाहते हैं,।

मैं इस देखा है:

How to assert that an action was called

लेकिन मेरी लड़ाई अपने उदाहरण में mockDialogService तरह मज़ाक उड़ाया नहीं है।

क्या यह जांचने का कोई तरीका है कि सही इनपुट पैरामीटर आदि के साथ कोई एक्शन या फनक ठीक से कहलाता है या नहीं?

+0

'DataCenterWcfProxy.SendVarData()' एक वर्चुअल विधि है, या आप एक इंटरफ़ेस जगह में रख सकते हैं? – Jeroen

+0

नहीं, यह इंटरफ़ेस पर केवल एक सार्वजनिक विधि है जो डब्ल्यूसीएफ पर क्रमबद्ध होगा। –

+0

यह एक इंटरफ़ेस 'IDataCenterWcfProxy' जोड़ने का विकल्प है जो 'DataCenterWcfProxy' द्वारा कार्यान्वित किया जाता है और' IDataCenterMsmqWriter' की' अद्यतन' विधि द्वारा उपयोग किया जाता है? – Jeroen

उत्तर

1

UpdateData होना चाहिए आभासी अन्यथा राइनो नकली ओवरराइट नहीं कर सकते विधि

1

सत्यापित करने के लिए एक कार्य या समारोह सही मापदंडों के साथ बुलाया गया था .WhenCalled extension उपयोग करने के लिए किया जाएगा सबसे अच्छा रास्ता। एक उदाहरण निम्नलिखित Google groups discussion में पाया जा सकता है।

यह उदाहरण दिखाता है बनाम वास्तविक उत्पादन की उम्मीद के बजाय उम्मीदों पर खरा उतरा जा रहा है या नहीं लाभ उठाने का तरीका।

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