我正在嘗試使用Moq創建單元測試,該測試測試MongoDB.AspNet.Identity V2提供程序。這條線給我的悲傷:無法實例化代理...找不到無參數構造函數
var appUser = new Mock<PreRegistrationMVC.Models.ApplicationUser>();
var userStore = new Mock<MongoDB.AspNet.Identity.UserStore<PreRegistrationMVC.Models.ApplicationUser>>();
看來userStore不會正確實例化這裏是錯誤。
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:
我完全新的起訂量,所以我在尋找: 需要什麼類型的設置,起訂量來實例化呢?有沒有關於Moq不能很好地發揮作用的UserStore類?
感謝您的閱讀。
哦,這工作!謝謝! :) – ChiliYago 2014-09-03 16:51:46
偉大的工作。還有一件事你可以指導我做什麼,我應該模仿。例如,我正在使用一些層架構,我只想測試一個層,我想測試它的層也有一些其他層依賴。那麼你應該建議什麼? – Naveen 2016-06-17 13:48:45
@Naveen你問的是一個非常廣泛的話題,評論不是討論的最佳地點。我的建議是閱讀一本關於單元測試的書 - Roy Osherove的書很好。他詳細介紹了你遇到的問題。 – trailmax 2016-06-17 14:20:01