Простое тестирование MVC ASP.Net - PullRequest
0 голосов
/ 27 декабря 2011

У меня есть следующий пример кода контроллера из хорошо известного источника:

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 альбомов возвращены методом Index ().

Я думал, что-то вроде этого может сделать это:

HomeController controller = new HomeController();
var result = controller.Index() as ViewResult;
var albums = (List<Album>)result.ViewData;
Assert.AreEqual(5, albums.Count);

Но значение модели .Count () всегда равно 0.

Во-первых, я что-то упустил - это возможно?

Во-вторых, я делаю это, чтобы выучить много принципов унаследованного кода. У меня есть этот код, который, я знаю, может быть серьезно улучшен. У него также нет тестов.

Я планирую покрыть существующий код тестами и серьезно его отредактировать.

Так что, пожалуйста, не отвечайте, например, «плохая практика» здесь или там, или реализуйте этот слой или этот шаблон и т. Д., Как это будет позже.

Просто самый простой способ проверить приведенный выше код действительно помог бы, пожалуйста:)

Возможно, даже хорошие блоги или книги также будут полезны.

Спасибо

Дэви

Ответы [ 2 ]

0 голосов
/ 27 декабря 2011

Если вы заинтересованы в изучении работы с унаследованным кодом, нет лучшего источника, чем книга «Работа с унаследованным кодом»

0 голосов
/ 27 декабря 2011

Вы можете получить доступ к модели с помощью свойства Model класса ViewDataDictionary:

albums = (List<Album>)result.ViewData.Model;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...