1

在模拟以下界面时,Rhino Mocks 3.6.0 和 3.6.1 有一个例外:

public interface ic
{
    IComponentConfig<TImpl> Bob<TSvc, TImpl>()
        where TImpl : TSvc;
}

我可以确认在删除通用“where”关联时,它会正确模拟。

堆栈跟踪牢牢地指向 Castle Dynamic Proxy:

System.BadImageFormatException 未被用户代码处理 HResult=-2147024885 Message=试图加载格式不正确的程序。(HRESULT 异常:0x8007000B) Source=mscorlib StackTrace:在 System.Reflection.Emit.TypeBuilder.TermCreateClass(RuntimeModule 模块,Int32 tk,ObjectHandleOnStack 类型)在 System.Reflection.Emit.TypeBuilder.CreateTypeNoLock() 在 System.Reflection.Emit .TypeBuilder.CreateType() at Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType() at Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType() at Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.GenerateCode(Type proxyTargetType, Type[ ] 接口,ProxyGenerationOptions 选项)位于 Castle.DynamicProxy.DefaultProxyBuilder。1.<GenerateMock>b__6(MockRepository r) at Rhino.Mocks.MockRepository.CreateMockInReplay[T](Func2 createMock) 在 Rhino.Mocks.MockRepository.GenerateMock[T](Object[] argumentsForConstructor) 在 XXXXX.ConfigTestBase.SetUp() 在 c:\git\MyFork\Workspace\Db.Montage.Common.Tests\Config\ConfigTestBase。 cs:第 27 行内部异常:

4

1 回答 1

1

这是旧版本 DynamicProxy 中的一个老错误,很久以前就修复了。

不幸的是,似乎 Rhino Mocks 仍然没有将它对 DynamicProxy 的依赖更新到更新的版本,修复了这个问题。

我认为您的两个选择是构建一个自定义版本 od Rhino(针对新的 DynamicProxy)或使用另一个使用更新版本 DynamicProxy(如 NSubstitute、FakeItEasy 或 Moq)的模拟框架

于 2013-02-02T03:06:23.837 回答