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: 192

Filed under:
|
|

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

Related posts about ASP.NET

Related posts about TDD