简单MVC ASP.网络测试
本文关键字:测试 网络 ASP MVC 简单 | 更新日期: 2023-09-27 18:19:02
我有以下示例控制器代码来自一个很好的识别源:
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();
}
}
我想写一个非常简单的测试来检查从Index()方法返回的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。
首先,我遗漏了什么吗?
其次,我这样做是为了学习很多关于遗留代码的原则。我有这个代码,我知道它可以被认真地改进。它也没有测试。
我的计划是用测试覆盖现有的代码,并认真地编辑它。
所以,请不要在这里或那里回答"坏做法"或实现这个层或那个模式等,因为这将在以后出现。
用最简单的方法来测试上面的代码真的很有帮助:)
也许好的博客或书籍也会有帮助。
感谢戴维如果您对使用遗留代码感兴趣,那么没有比"使用遗留代码"代码书更好的源代码了
您可以使用ViewDataDictionary
类的Model
属性访问模型:
albums = (List<Album>)result.ViewData.Model;