2009-10-08 3 views
5

नकली करने के लिए MOQ लाइब्रेरी का उपयोग कैसे करें मुझे अपने प्रोजेक्ट के भीतर एनम मॉक करने के लिए एमओसी लाइब्रेरी का उपयोग करने में कोई समस्या है। मैं एक वर्ग का परीक्षण करने की कोशिश कर रहा हूं और विधियों में से एक ने एनम स्वीकार किया है। क्या इसे करने का कोई तरीका है? नकलीएनयूएम

public enum PermissionType 
{ 
    Create = 0, 
    Read = 1, 
    Update = 2, 
    Delete = 3, 
} 

यहाँ कोड मैं बनाने के लिए उपयोग करने के लिए कोशिश कर रहा हूँ है:

private static Mock<PermissionService> GetMockPermissionService(bool hasPermissions) 
{ 
    var mockPermissionService = new Mock<PermissionService>(); 

    mockPermissionService.Setup(x => x.HasPermission(It.IsAny<string>(), 
         **It.IsAny<PermissionType>()**)).Returns(hasPermissions); 

    return mockPermissionService; 
} 

यह त्रुटि है मैं प्राप्त करते हैं:

यहाँ Enum मैं उपहास करने के लिए कोशिश कर रहा हूँ है

सिस्टम। ऑर्ग्यूमेंट अपवाद: अमान्य गैर-अतिसंवेदनशील सदस्य पर सेटअप: x => x.HasPermis सायन (It.IsAny(), It.IsAny())

मैं भी कोशिश की है:

mockPermissionService.Setup(x => x.HasPermission(It.IsAny<string>(), 
          **It.IsAny<int>()**)).Returns(hasPermissions); 

mockPermissionService.Setup(x => x.HasPermission(It.IsAny<string>(), 
          **PermissionType.Read**)).Returns(hasPermissions); 

किसी भी मदद की सराहना की है ...

उत्तर

3

इस त्रुटि का अर्थ अपने HasPermission कि PermissionService पर विधि वर्चुअल होना चाहिए, जैसे:

public virtual bool HasPermission(string name, PermissionType type) 
{ 
    // logic 
} 
+0

धन्यवाद, यह काम किया !! एननम सिर्फ एक लाल हेरिंग था बाहर निकलता है ... – Pat