【发布时间】:2010-07-22 12:41:26
【问题描述】:
我目前正在尝试实现 StructureMap 的 AutoMocking 功能,我需要帮助来获得模拟。
我有一个测试方法如下:
[Test]
public void DirctoryResult_Returns_Groups()
{
var autoMocker = new RhinoAutoMocker<GroupController>(MockMode.AAA);
GroupController controller = autoMocker.ClassUnderTest;
var directoryResult = controller.DirectoryResult("b");
var fundDirectoryViewModel = (FundDirectoryViewModel)directoryResult.ViewData.Model;
Assert.IsNotNull(fundDirectoryViewModel.Groups);
}
目前测试失败,因为fundDirectoryViewModel.Groups 为空。
DirectoryResult的真正实现如下:
private readonly IGroupService _groupService;
public PartialViewResult DirectoryResult(string query)
{
return PartialView(new FundDirectoryViewModel
{
Groups =_groupService.GetGroupsByQuery(query)
});
}
其中_groupService.GetGroupsByQuery(query) 使用IGroupRepository 的接口从数据库中读取数据。当然,我不希望我的测试从实际数据库中读取数据,但是有人可以告诉我如何获取它的模拟数据吗?
我需要做什么才能让 AutoMocker 为我模拟假数据?
更新:
供参考,这是GroupService & GroupRepository的定义
public class GroupService : IGroupService
{
private readonly IGroupRepository _groupRepository;
public GroupService(IGroupRepository groupRepository)
{
_groupRepository = groupRepository;
}
public IList<CompanyGroupInfo> GetGroupsByQuery(string query)
{
return _groupRepository.GetGroupsByQuery(query);
}
}
public class GroupRepository : DataUniverseRepository, IGroupRepository
{
public GroupRepository(ISession session)
{
_session = session;
}
public IList<CompanyGroupInfo> GetGroupsByQuery(string query)
{
// dig into the database and return stuff with _session..
}
}
【问题讨论】:
标签: c# nunit structuremap rhino-mocks automocking