문제

단위 테스트를 위해 모의 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 : StrongNameKeyPair에 대한 공개 키를 얻을 수 없습니다 ..

System.Reflection.StrongNameKeyPair.ngetPublickey (부울 내보내기, 바이트 [] 배열, 스트링 컨테이너) System.Reflection.StrongNameKeyPair.get_publickey () system.appdomain.internaldEfinedynamicAsSembly (어셈블리 이름, 어셈블리 보일 사법, String, stristions, strest, stristions, stristions, stristions, strest, stressions, strest internaldefineaMamicAsSembly. 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 (부울 isstrongnamed) Castle.dynamicproxy.generator.emitters.classemitter.createTypeBuilder (Modulescope Modulescope, 문자열 이름, 유형 (blah blah snip)

나는 Googled에서 제안하지 않는 것 같습니다 (RSA 폴더 보안 설정 변경 등) http://groups.google.com.br/group/castle-project-users/browse_thread/85685cf32a795158

나는 그렇게 생각하는 것이 맞다 HttpContextBase 의 일부입니다 System.Web.Abstraction, 서명 된 어셈블리입니다. MOQ는 실제로 동적 어셈블리에 서명하려고 시도하고 실패 할 것입니까?

도움이 되었습니까?

해결책

MOQ는 런타임에 모의 생성을 위해 Castle DynamicProxy를 사용합니다. Rhino Mocks는 동일한 목적으로 동일한 라이브러리를 사용합니다. 여기에서 확인하면 :

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

이 문제는 Machine Key Store에 대한 권한 중 하나라는 것을 알 수 있습니다. 테스트가 실행중인 사용자 계정이 무엇이든 상점에서 키를 만들고 삭제할 수있는 권한이 있어야합니다.

이 문제에 대한 자세한 내용은 다음을 참조하십시오.http://groups.google.co.uk/group/rhinomocks/browse_thread/thread/26df68ff01567509/5ddebf40728edc4

다른 팁

체크 아웃 이 블로그 게시물 Scott Hanselman- 조금 오래되었지만 mvcmockhelpers 그는 아마도 당신이하고있는 일을 성취하는 방법에 대한 좋은 아이디어를 줄 것입니다.

당신은 그것을 봐야합니다 ASP.NET 의이 비디오 구현의 놀라운 예를 보여주는 사이트.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top