tipo reflejar error documento mongodb moq asp.net-identity

mongodb - reflejar - No se puede crear una instancia de proxy... No se pudo encontrar un constructor sin parĂ¡metros



error al reflejar el tipo (3)

MOQ es bueno para simular interfaces, pero no funciona tan bien con clases concretas. Así que en lugar de burlarse de la clase concreta, pregunte por la interfaz:

var userStore = new Mock<IUserStore<PreRegistrationMVC.Models.ApplicationUser>>();

Además, ApplicationUser debe ser POCO, por lo que no es necesario burlarse de él, simplemente cree su instancia sin MOQ y úsela en las pruebas.

Estoy intentando crear una prueba unitaria usando Moq que prueba el proveedor MongoDB.AspNet.Identity V2 . Esta línea me está dando pena:

var appUser = new Mock<PreRegistrationMVC.Models.ApplicationUser>(); var userStore = new Mock<MongoDB.AspNet.Identity.UserStore<PreRegistrationMVC.Models.ApplicationUser>>();

Parece que el userStore no se crea correctamente, aquí está el error.

Castle.DynamicProxy.InvalidProxyConstructorArgumentsException was unhandled by user code HResult=-2147024809 Message=Can not instantiate proxy of class: MongoDB.AspNet.Identity.UserStore`1[[MVC.Models.ApplicationUser, MVC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. Could not find a parameterless constructor. Source=Moq StackTrace: at Castle.DynamicProxy.ProxyGenerator.CreateClassProxyInstance(Type proxyType, List`1 proxyArguments, Type classToProxy, Object[] constructorArguments) at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, Object[] constructorArguments, IInterceptor[] interceptors) at Moq.Proxy.CastleProxyFactory.CreateProxy(Type mockType, ICallInterceptor interceptor, Type[] interfaces, Object[] arguments) at Moq.Mock`1.<InitializeInstance>b__2() at Moq.PexProtector.Invoke(Action action) at Moq.Mock`1.InitializeInstance() at Moq.Mock`1.OnGetObject() at Moq.Mock.GetObject() at Moq.Mock.get_Object() at Moq.Mock`1.get_Object() at MVC_Tests.Identity.Accounts.AccountController_Test.TestSuccessfulRegister() in c:/Users/Tim/Documents/Visual Studio 2013/Projects/PreRegistrationApp/MVC_Tests/Identity/Accounts/AccountController_Test.cs:line 108 InnerException:

Soy completamente nuevo en Moq, así que estoy buscando: ¿Qué tipo de configuración se necesita para que Moq ejemplifique esto? ¿Hay algo en la clase UserStore que no funcione bien con Moq?

Gracias por leer.


Puede intentar referirse al comportamiento simulado, como se muestra a continuación

Mock<testClass>(MockBehavior.Strict, new object[] {"Hello"});


Tuve este problema He escrito...

var x = new Mock<Concrete>();

... en lugar de ...

var x = new Mock<IConcrete>();