سؤال

أحاول إنشاء HOCK HTTPCONTEXTBASE للاختبار الوحدة.

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: غير قادر على الحصول على المفتاح العام للقوي

system.reflection.strongnamekeypair.ngetpublickey (منطقية المصدرة، البايت [] صفيف، حاوية سلسلة) system.reflection.strongnamekypair.get_publickey.appdomain.internaldefinerynamicassembly (اسم التجميع، الجمعية DIRACCESS، سلسلة دير، دليل الأدلة، أذونات المطلوبة optionalPermissions, PermissionSet refusedPermissions, StackCrawlMark& stackMark, IEnumerable`1 unsafeAssemblyAttributes) System.AppDomain.DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) Castle.DynamicProxy.ModuleScope.CreateModule(Boolean signStrongName) Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName() Castle.DynamicProxy.ModuleScope .obtaindynamicmodule (أسماك منطقية

أنا غوغل واقتراحات هنا لا تبدو تعمل (تغيير إعداد أمان مجلد RSA إلخ) http://groups.google.com.br/group/ctle-project-users/browse_thread/thread/85685CF32A795158.

هل أنا صحيح أن أفكر في ذلك HttpContextBase هو جزء من System.Web.Abstraction, وهي جمعية موقعة. سيحاول موك في الواقع التوقيع على التجميع الديناميكي، وفشل؟

هل كانت مفيدة؟

المحلول

يستخدم موك Castle Dynamic Proxy لتوليد السخرط في وقت التشغيل. يستخدم أكشن أسماك نفس المكتبة لنفس الغرض. إذا كنت تحقق هنا:

http://ayende.com/blog/archive/2006/06/09/unabletoobtainpublickeyforestrongnamekeypair.aspx.

سترى أن المشكلة هي إحدى الأذونات إلى متجر مفتاح الجهاز. مهما كان حساب المستخدم قيد التشغيل، يجب أن يكون الاختبار إذنا لإنشاء المفاتيح وحذفها في المتجر.

يمكنك العثور على المزيد من التفاصيل حول هذه المشكلة هنا:http://groups.google.co.uk/group/rhinomocks/browse_thread/Thread/26DF68FF01567509/5DDEBF407228edc4.

نصائح أخرى

الدفع هذه المدونة post. بقلم سكوت هانزيلمان - إنه قديم قليلا، لكن mvcmockhelpers. إنه يعرض هناك ربما تعطيك فكرة جيدة عن كيفية تحقيق ما تفعله.

يجب عليك مشاهدة هذا الفيديو على ASP.NET الموقع الذي يظهر مثالا رائعا للمنفذ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top