MoQ

2010-03-11 19 views
5

का उपयोग करने का प्रयास करते समय StrongNameKeyPair समस्या I इकाई परीक्षण के लिए एक नकली HttpContextBase बनाने की कोशिश कर रहा हूं।MoQ

var fakePrinciple = new GenericPrincipal(
      new GenericIdentity(userId), 
      rolesList.ToArray());    
var mockHttpContext = new Mock<HttpContextBase>(); 
mockHttpContext.Setup(t => t.User).Returns(fakePrinciple); 
HttpContextBase mockedContext = mockHttpContext.Object; 

इकाई परीक्षण

के साथ पिछले बयान पर विफल रहता है फेंक दिया अपवाद: System.ArgumentException: करने में असमर्थ StrongNameKeyPair के लिए सार्वजनिक कुंजी प्राप्त ..

System.Reflection.StrongNameKeyPair .nGetPublicKey (बूलियन निर्यात, बाइट [] सरणी, स्ट्रिंग कंटेनर) सिस्टम। रिफ्लेक्शन .trongNameKeyPair.get_PublicKey() System.AppDomain.InternalDefineDynamicAssembly (AssemblyName नाम, AssemblyBuilderAccess का उपयोग, स्ट्रिंग dir, साक्ष्य सबूत, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions, StackCrawlMark & stackMark, IEnumerable`1 unsafeAssemblyAttributes) System.AppDomain। DefineDynamicAssembly (AssemblyName नाम, AssemblyBuilderAccess पहुँच) Castle.DynamicProxy.ModuleScope.CreateModule (बूलियन signStrongName) Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongNam ई() Castle.DynamicProxy.ModuleScope.ObtainDynamicModule (बूलियन isStrongNamed) Castle.DynamicProxy.Generators.Emitters.ClassEmitter.CreateTypeBuilder (ModuleScope modulescope, स्ट्रिंग नाम, प्रकार (blah blah स्निप)

मैं googled और यहाँ सुझाव काम करने के लिए नहीं है (परिवर्तन आरएसए फ़ोल्डर सुरक्षा आदि की स्थापना) http://groups.google.com.br/group/castle-project-users/browse_thread/thread/85685cf32a795158

हूँ मुझे लगता है कि करने के लिए है कि क्योंकि HttpContextBaseSystem.Web.Abstraction का हिस्सा है, जो एक पर हस्ताक्षर किए विधानसभा है सही करें। Moq वास्तव में गतिशील असेंबली पर हस्ताक्षर करने का प्रयास करेंगे, और असफल?

+0

Fwiw, मैं HttpContextBase उपहास करने के लिए समय की बहुत सारी Moq का इस्तेमाल किया है और कहा कि इस मुद्दे को नहीं था।जो भी आपकी समस्या है, यह Moq और HttpContextBase के संयोजन के लिए सामान्य नहीं है। –

+0

चाल यह है कि अनुमतियाँ मशीनकेस फ़ोल्डर पर सेट करने की आवश्यकता नहीं है RSA। यदि आप सावधान पाठक नहीं हैं तो Ayende की पोस्ट यह पूरी तरह से स्पष्ट नहीं करती है। –

+0

मुझे खुशी है कि मैंने यह पाया, दो दिन, अंत में तय: डी। बस कुछ और संदर्भ जोड़ना चाहते थे जो मेरी मदद करते थे, अगर कोई और इसमें भाग लेता है: http://ansaurus.com/question/3154345-strong-name-keys-on-windows-7 | http://msdn.microsoft.com/en-us/library/bb909654(v=vs.90).aspx वास्तव में मुझे मेरे लिए काम करने वाले फ़िक्स पर शून्य में मदद मिली। –

उत्तर

9

एमओक्यू रनटाइम पर मैक्स उत्पन्न करने के लिए कैसल डायनैमिक प्रॉक्सी का उपयोग करता है। Rhino Mocks एक ही उद्देश्य के लिए एक ही पुस्तकालय का उपयोग करता है। आप यहाँ चेक करते हैं:

http://ayende.com/Blog/archive/2006/06/09/UnableToObtainPublicKeyForStrongNameKeyPair.aspx

आपको लगता है कि इस मुद्दे को मशीन कुंजी संग्रह करने के लिए अनुमति में से एक है देखेंगे। जो भी उपयोगकर्ता खाता परीक्षण चला रहा है उसे स्टोर में कुंजी बनाने और हटाने की अनुमति होनी चाहिए।

इस समस्या के बारे में यहाँ और अधिक जानकारी प्राप्त कर सकते: http://groups.google.co.uk/group/RhinoMocks/browse_thread/thread/26df68ff01567509/5ddebf407228edc4

+0

पर सहमत हुए मैंने आरएसए और क्रिप्टो फ़ोल्डरों पर अनुमतियों की जांच की लेकिन किसी भी तरह से यह मशीन की के लिए सेट नहीं है। धन्यवाद विल –

+0

ऐसा इसलिए है क्योंकि यह मशीनकेज़ फ़ोल्डर है जो महत्वपूर्ण है और इसे अनुमतियों का वारिस नहीं है! –

0

बाहर चेक this blog post स्कॉट Hanselman द्वारा - यह एक छोटे वर्ष है, लेकिन MvcMockHelpers वह वहाँ शायद आप कैसे आप क्या कर रहे पूरा करने के लिए एक अच्छा विचार दे देंगे प्रदर्शित करता है।

-1

आपको this video on asp.net साइट देखना चाहिए जो कार्यान्वयन का एक अद्भुत उदाहरण दिखा रहा है।

+2

साइनिंग यहां समस्या है, एमवीसी में नकली कैसे करें। – Will

+0

ठीक मेरी गलती –