Ne peut pas instancier proxy...ne Pourrait pas trouver un constructeur sans paramètre
Je suis en train de créer une unité de test à l'aide de Moq, qui teste les MongoDB.AspNet.L'Identité V2 fournisseur. Cette ligne est de me donner le deuil:
var appUser = new Mock<PreRegistrationMVC.Models.ApplicationUser>();
var userStore = new Mock<MongoDB.AspNet.Identity.UserStore<PreRegistrationMVC.Models.ApplicationUser>>();
Il semble que le userStore de ne pas instancier correctement ici est l'erreur.
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:
Je suis complètement nouveau pour Moq donc je suis à la recherche de:
Ce type de paramètres sont nécessaires pour Moq instancier cette? Est-il quelque chose à propos de la UserStore classe qui ne joue pas bien avec Moq?
Merci pour la lecture.
Vous devez vous connecter pour publier un commentaire.
MOQ est bon de se moquer des interfaces, mais ne fonctionne pas si bien avec les classes de béton. Donc, au lieu de se moquer de la classe de béton, demander de l'interface:
Aussi
ApplicationUser
devrait être POCO, donc pas besoin de s'en moquer, il suffit de créer une instance sans MOQ et l'utilisation dans les tests.J'ai eu ce problème. J'avais écrit...
... au lieu de ...
Vous pouvez essayer de référence se Moquer de comportement,comme indiqué ci-dessous
new Mock<testClass>(MockBehavior.Strict, "Hello");