Я пытаюсь изучить TDD / BDD, используя NUnit и Moq.
Проект , за которым я следовал, передает класс DataService в мой контроллер для обеспечения доступа к репозиториям.
Я хотел бы смоделировать класс DataService, чтобы разрешить тестирование контроллеров.
Есть много примеров смоделирования репозитория, переданного в контроллер, но я не могу понять, как смоделировать DataServiceкласс в этом
scenerio.
Может кто-нибудь объяснить, как это реализовать?
Вот пример соответствующего кода:
[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);
}
}
}