Проблема StrongNameKeyPair при попытке использовать MoQ

Я пытаюсь создать ложный HttpContextBase для модульного теста.

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

Модульный тест перестал работать в последнем операторе с

выдал исключение: Система. ArgumentException: Невозможно получить открытый ключ для StrongNameKeyPair..

Система. Отражение. StrongNameKeyPair.nGetPublicKey (экспортируемая булевская переменная, Байт [] массив, Строковый контейнер) Система. Отражение. StrongNameKeyPair.get_PublicKey () Система. AppDomain. InternalDefineDynamicAssembly (название AssemblyName, доступ AssemblyBuilderAccess, Строковый dir, доказательство Доказательства, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions, StackCrawlMark& stackMark, IEnumerable '1 unsafeAssemblyAttributes) Система. AppDomain. DefineDynamicAssembly (название AssemblyName, доступ AssemblyBuilderAccess) Замок. DynamicProxy. ModuleScope. CreateModule (булевская переменная signStrongName) Замок. DynamicProxy. ModuleScope. ObtainDynamicModuleWithStrongName () Замок. DynamicProxy. ModuleScope. ObtainDynamicModule (булевская переменная isStrongNamed) Замок. DynamicProxy. Генераторы. Эмиттеры. ClassEmitter. CreateTypeBuilder (ModuleScope modulescope, Имя строки, Тип (и тому подобное надрез)

Я погуглил, и предложения здесь, кажется, не работают (настройка безопасности папки RSA изменения и т.д.) http://groups.google.com.br/group/castle-project-users/browse_thread/thread/85685cf32a795158

Я корректен для размышления этого потому что HttpContextBase часть System.Web.Abstraction, который является блоком со знаком. Moq на самом деле попытается подписать динамический блок и сбой?

6
задан Rokey Ge 11 March 2010 в 14:29
поделиться

3 ответа

MoQ использует Castle DynamicProxy для генерации фиктивных сообщений во время выполнения. Rhino Mocks использует ту же библиотеку для тех же целей. Если вы посмотрите здесь:

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

, вы увидите, что проблема связана с одним из разрешений на хранилище ключей машины. Какая бы учетная запись пользователя ни использовала тест, она должна иметь разрешение на создание и удаление ключей в магазине.

Вы можете найти более подробную информацию об этой проблеме здесь: http://groups.google.co.uk/group/RhinoMocks/browse_thread/thread/26df68ff01567509/5ddebf407228edc4

10
ответ дан 10 December 2019 в 02:46
поделиться

Вам следует посмотреть это видео на сайте asp.net , где показан замечательный пример реализации.

-1
ответ дан 10 December 2019 в 02:46
поделиться

Ознакомьтесь с этой записью в блоге Скотта Хансельмана - она ​​немного устарела, но MvcMockHelpers , который он там показывает, будет вероятно, даст вам хорошее представление о том, как достичь того, что вы делаете.

0
ответ дан 10 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: