我正在研究這個WebAPI項目,我需要爲它創建單元測試。該項目的基礎是使用VS 2010創建的,然後添加了WebApi模塊。C#WebApi單元測試和模擬控制器
控制器的工作方式有點妨礙測試/模擬。我使用xUnit和Moq,但絕對沒有必要堅持這兩個。
該應用程序使用特定對象來處理數據庫訪問,所以我有 controllerObject和其構造器需要DataAccessObject
我有嘲諷控制器/數據訪問對問題。我試圖運行的第一個測試是GetAllFromDataBase,但我沒有真正知道如何去做。
編輯:
我做了什麼的Cuong樂告訴我,現在全是移動的,我真的apreciate它。但我陷入了另一個問題。要訪問API,有一個用戶名/密碼對,我的控制器使用Thread.CurrentPrincipal.Identity.Name;現在我需要設置這個值,以使其完全工作,我猜。
另外valueServiceMock.Setup(service => service.GetValues()) .Returns(new [] {「value1」,「value2」});
似乎沒有工作。因爲代碼試圖訪問數據庫,並且什麼也得不到,因爲它無法獲得有效的用戶名以尋找
你不應該嘲笑控制器,你會嘲笑控制器需要的服務。如果你嘲笑控制器,你不會測試控制器。這是完整的一點。看看這個帖子:http://www.peterprovost.org//blog/2012/06/16/unit-testing-asp-dot-net-web-api/ – tugberk 2012-08-03 22:01:55
你是否檢查過你通過模擬對象構造函數是這樣的:var controller = new ValuesController(valueServiceMock.Object); – 2012-08-07 06:35:50