2010-07-22 3 views
0

В настоящее время я пытаюсь реализовать функциональность 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.. 
    } 
} 

ответ

0

Я был проинформирован о том, что вопрос был неправ. Automocker не издевается над такими данными. Это зависит от меня, чтобы указать поддельные данные с Rhino Mocks.

Это работает:

[Test] 
public void DirctoryResult_Returns_Groups() 
{ 
    var service = autoMocker.Get<IGroupService>(); 
    service.Expect(srv => srv.GetGroupsByQuery(Arg<string>.Is.Anything)) 
     .Return(new List<CompanyGroupInfo> 
        { 
         new CompanyGroupInfo(), 
         new CompanyGroupInfo(), 
         new CompanyGroupInfo() 
        }); 

    service.Replay(); 

    var directoryResult = _controller.DirectoryResult("b"); 

    var fundDirectoryViewModel = (FundDirectoryViewModel)directoryResult.ViewData.Model; 

    Assert.That(fundDirectoryViewModel.Groups.Count, Is.EqualTo(3)); 

    service.AssertWasCalled(srv => srv.GetGroupsByQuery(Arg<string>.Is.Equal("b"))); 
} 
Смежные вопросы