Ich versuche zu lernen, wie man Unit-Test und Arbeit mit MVC 3 und ich bin immer auf das Problem der Wie teste ich zwei Modelle stecken. Hier ist der Code
public class HomeController : Controller
{
private IRepository _repository;
public HomeController(IRepository repository)
{
_repository = repository;
}
//
// GET: /Home/
public ActionResult Index()
{
return View(_repository.GetAllGenres());
}
}
public interface IRepository
{
IEnumerable<Genre> GetAllGenres();
IEnumerable<Album> GetTopAlbums(int count);
}
und nehme an, dass dies mein Unit Testing ist
[TestFixture]
class HomeControllerTests
{
[Test]
public void Test1()
{
//Arrange
var controller = new HomeController(new InMemoryRepository());
var result = (ViewResult) controller.Index();
Assert.AreEqual(10,((IEnumerable<Genre>)result.ViewData.Model).Count());
}
[Test]
public void Test2()
{
var controller = new HomeController(new InMemoryRepository());
var result = (ViewResult) controller.Index();
//I Want to be able to do something like this
Assert.AreEqual(5,result.ViewData.Model.GetTopAlbums(5).Count);
}
}
Meine Frage ist nun: Wie genau muss ich vorgehen, damit so etwas funktioniert, wie ich es mir wünsche? Oder erstelle ich eine ChildActionOnly-Methode, die für die Rückgabe der Top-Alben verantwortlich ist.