我有從公認的源下面的示例控制器代碼:簡單的MVC ASP.Net測試
public class HomeController : Controller
{
MyStoreEntities storeDB = new MyStoreEntities();
public ActionResult Index()
{
var albums = GetTopSellingAlbums(5);
return View(albums);
}
private List<Album> GetTopSellingAlbums(int count)
{
return storeDB.Albums
.OrderByDescending(a => a.OrderDetails.Count())
.Take(count)
.ToList();
}
}
我想寫一個非常簡單的測試來檢查5張專輯從指數()方法返回。
我覺得像這樣的事情可能做到這一點:
HomeController controller = new HomeController();
var result = controller.Index() as ViewResult;
var albums = (List<Album>)result.ViewData;
Assert.AreEqual(5, albums.Count);
但model.Count()的值始終爲0
首先,我缺少的東西 - 這可能?
其次,我正在學習圍繞遺留代碼的很多原理。我有這個代碼,我知道這個代碼可以被嚴重改進。它也沒有測試。
我的計劃是用測試覆蓋現有的代碼,並認真編寫代碼。
因此,請不要在這裏或那裏做出反應,比如'不好的做法',或者實施這個層或那些模式等,因爲這些會在以後出現。
只是爲了測試上面的代碼將真正幫助請:)
甚至好博客或者書也將是有益的最簡單的方法。
感謝
戴維
你有專輯數據庫中的數據?當連接到與您的測試相同的數據庫時,控制器所屬的網站是否顯示數據?測試和網站使用相同的數據庫連接字符串? – k3b 2013-07-06 08:06:27