MoN

2010-03-11 6 views
5

Kullanmaya çalışırken StrongNameKeyPair sorunu Birim testi için sahte bir HttpContextBase oluşturmaya çalışıyorum.MoN

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; 

birim test istisna attı

ile son açıklamada başarısız: .. StrongNameKeyPair için genel anahtarı açılamadı için elde

System.Reflection.StrongNameKeyPair: System.ArgumentException .nGetPublicKey (Boole dışa aktarıldı, Bayt [] dizisi, Dize kapsayıcısı) System.Reflection.StrongNameKeyPair.get_PublicKey() System.AppDomain.InternalDefineDynamicAssembly (AssemblyName ad, AssemblyBuilderAccess erişimi, dize dir, kanıt kanıt, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions, StackCrawlMark & stackMark, IEnumerable`1 unsafeAssemblyAttributes) System.AppDomain. DefineDynamicAssembly (AssemblyName adı, AssemblyBuilderAccess erişimi) Castle.DynamicProxy.ModuleScope.CreateModule (Boolean signStrongName) Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongNam e() Castle.DynamicProxy.ModuleScope.ObtainDynamicModule (Boolean isStrongNamed) Castle.DynamicProxy.Generators.Emitters.ClassEmitter.CreateTypeBuilder (ModuleScope modulescope, Dize adı, Tür (filan kesik)

ben

http://groups.google.com.br/group/castle-project-users/browse_thread/thread/85685cf32a795158 ben HttpContextBase çünkü imzalı bir düzenek olan System.Web.Abstraction parçası olduğunu düşünmek haklı mıyım (değişim RSA klasör güvenliği vb ayarlama) googled ve burada öneri çalışmak görünmüyor. Moq, aslında dinamik meclisi imzalamaya çalışacak ve başarısız olacak mı? Scott Hanselman'ın tarafından

+0

FWIW, ben birçok kez alay HttpContextBase için MOQ kullanılan ve sorunu yoktu.Sorununuz ne olursa olsun, Moq ve HttpContextBase'in kombinasyonu için genel değil. –

+0

Hile, izinlerin RSA değil, MachineKeys klasöründe ayarlanması gerektiğidir. Dikkatli okuyucunuz yoksa, Ayende'den gelen yazı bunu açıkça ortaya koymaz. –

+0

Bunu buldum, ugh, iki gün ve sonunda düzelttim: D. Sadece bana yardımcı olan bazı referanslar eklemek istedim, bu durumda başka biri varsa: http://ansaurus.com/question/3154345-strong-name-keys-on-windows-7 | http://msdn.microsoft.com/en-us/library/bb909654(v=vs.90).aspx gerçekten benim için çalışan düzeltmeyi sıfırlamamda bana yardımcı oldu. –

cevap

9

MoQ, çalışma zamanında aldatma oluşturmak için Castle DynamicProxy'yi kullanır. Rhino Mocks aynı amaçla aynı kütüphaneyi kullanır. Burada kontrol edin:

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

Aynı sorunu makinesi anahtar deposuna izinleri biri olduğunu göreceksiniz. Kullanıcı hesabı her ne olursa olsun, test, mağazada anahtar oluşturma ve silme iznine sahip olmalıdır. Burada bu konuyla ilgili daha fazla ayrıntı bulabilirsiniz

: http://groups.google.co.uk/group/RhinoMocks/browse_thread/thread/26df68ff01567509/5ddebf407228edc4

+0

RSA ve Crypto klasörlerinde izinleri kontrol ettim ancak bir şekilde Makine Tuşları için ayarlanmadım. Teşekkürler Will. –

+0

Çünkü önemli olan MachineKeys klasörü olduğu için izinleri devralmıyor! –

0

Kontrol dışarı this blog post - bu biraz eski ama MvcMockHelpers muhtemelen size ne yaptığınızı gerçekleştirmek için nasıl iyi bir fikir orada verecektir görüntüler. Uygulamanın harika bir örneğini gösteren this video on asp.net sitesini izlemelisiniz.

-1

+2

İmzalama burada, mvc ile alay etmek değil, burada bir konudur. – Will

+0

tamam, benim hatam oldu –

İlgili konular