【发布时间】:2010-12-30 16:38:58
【问题描述】:
我正在尝试使用 NUnit 和 Moq 来学习 TDD/BDD。
我一直关注的 design 将一个 DataService 类传递给我的控制器以提供对存储库的访问。
我想模拟 DataService 类以允许测试控制器。
有很多模拟传递给控制器的存储库的示例,但我不知道如何在此模拟 DataService 类
场景。
有人可以解释一下如何实现吗?
以下是相关代码的示例:
[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);
}
}
}
【问题讨论】: