У меня есть следующий код контроллера образца из хорошо признанного источника:Простой 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.
Во-первых, я-то отсутствует - это возможно ?
Во-вторых, я делаю это, чтобы узнать много принципов в отношении устаревшего кода. У меня есть этот код, который, как я знаю, может быть серьезно улучшен. У него также нет тестов.
Мой план состоит в том, чтобы покрыть существующий код испытаниями и серьезно изменить его.
Итак, пожалуйста, никаких ответов, таких как «плохая практика» здесь или там, или реализовать этот слой или эти шаблоны и т. Д., Как это произойдет позже.
Просто самый простой способ проверить код выше будет реально помочь, пожалуйста :)
Возможно даже хорошие блоги или книги, также было бы полезно.
Благодаря
Дэви
У вас есть данные альбома в базе данных? содержит ли веб-сайт, на котором находится контроллер, для отображения данных при подключении к тому же дБ, что и ваш тест? сделать тест и веб-сайт использовать ту же строку соединения db? – k3b