简单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。

首先,我遗漏了什么吗?

其次,我这样做是为了学习很多关于遗留代码的原则。我有这个代码,我知道它可以被认真地改进。它也没有测试。

我的计划是用测试覆盖现有的代码,并认真地编辑它。

所以,请不要在这里或那里回答"坏做法"或实现这个层或那个模式等,因为这将在以后出现。

用最简单的方法来测试上面的代码真的很有帮助:)

也许好的博客或书籍也会有帮助。

感谢戴维

简单MVC ASP.网络测试

如果您对使用遗留代码感兴趣,那么没有比"使用遗留代码"代码书更好的源代码了

您可以使用ViewDataDictionary类的Model属性访问模型:

albums = (List<Album>)result.ViewData.Model;