現在、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
現在、はnullであるため、テストは失敗しています。
の実際の実装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..
}
}