ASP.Net MVC TDD using Moq
        Posted  
        
            by 
                Nicholas Murray
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Nicholas Murray
        
        
        
        Published on 2010-12-30T16:38:58Z
        Indexed on 
            2010/12/31
            10:54 UTC
        
        
        Read the original article
        Hit count: 265
        
I am trying to learn TDD/BDD using NUnit and Moq.
The design that I have been following passes a DataService class to my controller to provide access to repositories.
I would like to Mock the DataService class to allow testing of the controllers.
There are lots of examples of mocking a repository passed to the controller but I can't work out how to mock a DataService class in this
scenerio.
Could someone please explain how to implement this?
Here's a sample of the relevant code:
[Test]
public void Can_View_A_Single_Page_Of_Lists()
{
    var dataService = new Mock<DataService>();
    var controller = new ListsController(dataService); 
    ...
}
namespace Services
{
    public class DataService
    {
        private readonly IKeyedRepository<int, FavList> FavListRepository;
        private readonly IUnitOfWork unitOfWork;
        public FavListService FavLists { get; private set; }
        public DataService(IKeyedRepository<int, FavList> FavListRepository,
        IUnitOfWork unitOfWork)
        {
            this.FavListRepository = FavListRepository;
            this.unitOfWork = unitOfWork;
            FavLists = new FavListService(FavListRepository);
    }
        public void Commit()
        {
            unitOfWork.Commit();
        }
    }
}
namespace MyListsWebsite.Controllers
{
    public class ListsController : Controller
    {
        private readonly DataService dataService;
        public ListsController(DataService dataService)
        {
            this.dataService = dataService;
        }
        public ActionResult Index()
        {
            var myLists = dataService.FavLists.All().ToList();
            return View(myLists);
        }
    }
}
© Stack Overflow or respective owner