[英]Error unit testing webapi controller
我正在使用AspNet Web Api Client 5.0,我正在嘗試對web api控制器進行單元測試。
var encservice = new EncryptionService();
var acctservice = FakeServices.GetAccountService();
var controller = new AccountController(acctservice, encservice);
controller.Request = new HttpRequestMessage();
當代碼
controller.Request.SetConfiguration(new HttpConfiguration());
被執行我遇到了異常
消息 :無法加載文件或程序集“Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其中一個依賴項。 定位的程序集的清單定義與程序集引用不匹配。 (HRESULT異常:0x80131040)
資料來源: System.Net.Http.Formatting
Stacktrace :位於System.Net的System.Net.Http.Forttting.Medic中的System.Net.Http.Forttting.Medie中的System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters()處的System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() .HttpConfiguration.DefaultFormatters()位於System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection路由)的System.Web.Http.HttpConfiguration..ctor()位於EMR.Test.Controller.AccountControllerTest.Should_Get()的c中:\\ PremiumProjectsCollection \\ emr \\ src \\ EMRAzure \\ EMRAzure \\ EMR.Test \\ Controller \\ AccountControllerTest.cs:第34行
我使用的newsoft.json的版本是6.0
我的配置文件中也有一個程序集重定向
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
我使用的測試運行器是MStest,VS2012
您需要添加程序集重定向 :
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json"
publicKeyToken="30ad4fe6b2a6aeed"
culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
(假設Newtonsoft.Json的程序集版本正好是6.0.0.0 。)
(注意以下注釋是指具有此問題的Web Api客戶端項目)
我對Newtonsoft.Json的版本有同樣的問題,所以我刪除了舊版本的引用,並使用Package Manager Console在我的Web Api Client Library和Test Project上安裝了最新版本的Newtonsoft.Json。
安裝包Newtonsoft.Json -Version 6.0.8(注意你可能需要找出哪個是最新版本)
問題仍然存在,所以我意識到System.Net.Http.Formatting和我最新版本的Json之間出現了崩潰。 要解決此問題,請刪除System.Net.Http和System.Net.Http.Formatting引用,並通過Nuget安裝WebApi客戶端庫,如下所示:
安裝包Microsoft.AspNet.WebApi.Client
這解決了我。
我自己沒試過,但是2012年的mstest似乎有一個錯誤。 你必須使用.testsettings
文件來獲取app.config。
請參閱以下鏈接: http : //social.msdn.microsoft.com/Forums/vstudio/en-US/234926d1-42c0-4ebb-af39-1626e72f6c39/why-does-assemblybinding-work-only-if-testsettings-file -is-二手vs2012rc?論壇= vsunittest
我幾天前遇到了同樣的問題,我花了幾個小時才找到這個問題的解決方案。
我正在測試一個安裝了最新版NewtonSoft的單元,而我的測試項目有一個舊版本。
我通過右鍵單擊解決方案資源管理器中的解決方案,通過“管理Nuget軟件包解決方案”選項,在我的解決方案中整合了此庫的版本。
這將更新當前解決方案下項目中存在的所有NewtonSoft庫,並從VisualStudio在解決方案目錄中名為packages的文件夾中創建的包控件中刪除所有舊版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.