我試圖用Visual Studio 2013的內置工具單元測試.NET Web項目。我已經用NuGet添加了Moq,但是如果不用虛擬方法和/或接口重寫整個項目,就無法測試控制器。所以我正在尋找一種方法來測試代碼,而不必在現有的源代碼中進行混淆。是否存在不需要虛擬方法的.NET/C#嘲諷框架
預先感謝任何幫助
我試圖用Visual Studio 2013的內置工具單元測試.NET Web項目。我已經用NuGet添加了Moq,但是如果不用虛擬方法和/或接口重寫整個項目,就無法測試控制器。所以我正在尋找一種方法來測試代碼,而不必在現有的源代碼中進行混淆。是否存在不需要虛擬方法的.NET/C#嘲諷框架
預先感謝任何幫助
由於您使用VS2013你可以利用微軟正版正貨和墊片。更多詳細信息,並使用在http://msdn.microsoft.com/en-us/library/hh549175.aspx
我想這隻適用於最終版本 – AlwaysAProgrammer
根據http://www.visualstudio.com/products/compare- visual-studio-products-vs可用於Ultimate和Premium(無論是哪個版本)版本 – tucaz
我認爲Shims in Fakes框架是您的選擇(顯然,如果您擁有合適的許可證),但不適合使用Shims for你擁有的代碼。我建議你最終改變你的代碼來使用接口/虛擬方法。 –
也許退房FakeItEasy:http://fakeiteasy.github.io/
能夠做到 「架空」 嘲諷目前的三個庫:
嗨!如果你不能重寫代碼,也許你不能做適當的單元測試 - 但我可能是錯的。 **也許** *自動勘探測試*可能在這種情況下有用。您可以使用Selenium和Firefox/IE/Chrome驅動程序。如果您選擇這樣做,您可以在代碼中定義一些UI測試場景並運行它們。順便說一句,你爲什麼要測試網絡控制器?只是問...你可以測試它們依賴的模塊。通常情況下,網絡控制器是假的和懶惰的,他們將傳入的請求委託給其他更加努力工作的模塊:) –
我不得不模仿控制器,因爲它的構造函數依賴於我不想以任何方式改變的存儲庫(所以我嘲笑) - 我想我可以回過頭來重構所有的存儲庫來擴展接口,但我希望避免這種情況。我不想破壞任何東西 – eggshell
然後...只需傳遞控制器[動態對象](http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx):)或者一個* ExpandoObject *。可能你可以用這種方式欺騙他(它)。 DynamicObject將作爲一個假存儲庫。你怎麼看待這件事?哎呀,只有現在我明白了:(它不會工作,對不起... –