В настоящее время я пытаюсь реализовать функциональность AutoMocking StructureMap, и мне нужна помощь в получении издевательства.Как я могу заставить AutoMocker StructureMap издеваться над поддельными данными?
У меня есть метод испытания следующим образом:
[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..
}
}