2010-07-22 2 views
0

저는 현재 StructureMap의 AutoMocking 기능을 구현하려고하고 있습니다. 조롱당하는 데 도움이 필요합니다. fundDirectoryViewModel.Groups가 null 때문에 StructureMap의 AutoMocker에서 가짜 데이터를 모방하려면 어떻게해야합니까?

[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); 
} 

현재 테스트가 실패 다음과 같이

난 시험 방법이있다. _groupService.GetGroupsByQuery(query)가 IGroupRepository에 인터페이스를 사용

private readonly IGroupService _groupService; 
public PartialViewResult DirectoryResult(string query) 
{ 
    return PartialView(new FundDirectoryViewModel 
    { 
     Groups =_groupService.GetGroupsByQuery(query) 
    }); 
} 

데이터베이스로부터 데이터를 판독하는 다음과 같이

DirectoryResult의 실제 구현이다. 물론, 필자의 테스트가 실제 데이터베이스의 데이터를 읽는 것을 원하지 않지만 누군가가 모의 데이터를 가져 오는 방법을 말해 줄 수 있습니까?

AutoMocker가 나를 위해 가짜 데이터를 모방하려면 어떻게해야합니까?

업데이트 : 참조

이 내가 질문은 잘못된 것을 통보했습니다

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

GroupService & GroupRepository의 정의입니다. Automocker는 그런 데이터를 조롱하지 않습니다. Rhino Mock으로 가짜 데이터를 지정하는 것은 나에게 달려있다.

이 작동 :

[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"))); 
}