2016-08-26 4 views
11

मैं एक यूनिट परीक्षण लिखने की कोशिश कर रहा हूं जहां मुझे संरक्षित विधि सेट अप करने की आवश्यकता है। मैं इस सेटअप के लिए Moq का उपयोग कर रहा हूँ।एक शून्य तर्क मान के बजाय ItExpr.IsNull <TValue> का उपयोग करें, क्योंकि यह उचित विधि लुकअप को रोकता है

System.ArgumentException::

_innerHandler.Protected() 
      .Setup<Task<HttpResponseMessage>>("SendAsync", It.IsAny<HttpRequestMessage>(), It.IsAny<CancellationToken>()) 
      .ReturnsAsync(responseMessage); 

जब इस लाइन को निष्पादित करता है, यह निम्न अपवाद फेंकता उपयोग ItExpr.IsNull<TValue> बजाय एक शून्य तर्क के मूल्य, के रूप में यह उचित विधि देखने से बचाता है।

जब मैं इसे ItExpr.IsNull<TValue> का उपयोग करने के लिए बदलता हूं, तो यह परीक्षण निष्पादित करने की अनुमति देता है। हालांकि, यह निश्चित रूप से सेटअप को याद कर रहा है जिसे मैं कॉन्फ़िगर करना चाहता था।

It.IsAny<TValue> का उपयोग कर संरक्षित विधि को स्थापित करने के लिए मुझे क्या करने की आवश्यकता है?

उत्तर

14

IProtectedMock सेट करते समय, आपको के बजाय Moq.Protected.ItExpr का उपयोग करना चाहिए।

_innerHandler.Protected() 
      .Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(), ItExpr.IsAny<CancellationToken>()) 
      .ReturnsAsync(responseMessage); 
:

यहाँ मैं क्या मेरे सवाल में क्या करने की कोशिश कर रहा था की को सही कार्यान्वयन है

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