C# 如何使用Rhino mock模拟MEF导出?
参考托管可扩展性框架(MEF),我试图解决如何使用mock创建干净的测试 我有一个导出组件,它有三个私有导入。每个导入的对象(字段)都需要模拟。鉴于CompositionContainer使用奇特的反射策略来设置可组合部件的导入私有字段,即使在单元测试中,我也需要使用容器来设置这些字段值C# 如何使用Rhino mock模拟MEF导出?,c#,.net,rhino-mocks,mef,C#,.net,Rhino Mocks,Mef,参考托管可扩展性框架(MEF),我试图解决如何使用mock创建干净的测试 我有一个导出组件,它有三个私有导入。每个导入的对象(字段)都需要模拟。鉴于CompositionContainer使用奇特的反射策略来设置可组合部件的导入私有字段,即使在单元测试中,我也需要使用容器来设置这些字段值 如何在运行时告诉容器接受我用Rhino Mock创建的动态对象作为有效导出,以便它可以用于满足我正在测试的组件中的导入?我的问题已经得到了回答 嗨,内森 这里有两种不同的选择 使用批处理,可以调用AddExp
如何在运行时告诉容器接受我用Rhino Mock创建的动态对象作为有效导出,以便它可以用于满足我正在测试的组件中的导入?我的问题已经得到了回答
嗨,内森 这里有两种不同的选择
protected override void Context()
{
MockCache = MockRepository.GenerateStub<ICache>();
var metadata = new Dictionary<string, object> ()
var cacheDefinition = new FakeInstanceExportDefinition(typeof(ICache), MockCache, metadata);
FakeProvider = new FakeExportProvider(f => ((FakeInstanceExportDefinition)f).Instance);
FakeProvider.AddExportDefinitions(cacheDefinition);
CacheExport = FakeProvider.GetExport<ICache>();
}
受保护的覆盖无效上下文()
{
MockCache=MockRepository.GenerateStub();
var元数据=新字典()
var cacheDefinition=new FakeInstanceExportDefinition(typeof(ICache)、MockCache、元数据);
FakeProvider=新的FakeExportProvider(f=>((FakeInstanceExportDefinition)f).Instance);
FakeProvider.AddExportDefinitions(缓存定义);
CacheExport=FakeProvider.GetExport();
}
现在我在上面直接查询导出提供程序。但是,我们的容器允许在其构造中传入导出提供程序。所以你可以这样做
var container=new CompositionContainer(null,FakeProvider)
嗯
格伦