Как я могу заставить AutoMocker StructureMap подделать поддельные данные? - PullRequest
0 голосов
/ 22 июля 2010

В настоящее время я пытаюсь реализовать функциональность AutoMocking в StructureMap, и мне нужна помощь в получении макета.

У меня есть метод Test следующим образом:

[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..
    }
}

1 Ответ

0 голосов
/ 22 июля 2010

Мне сообщили, что вопрос был неправильным.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")));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...