1

次のインターフェイスをモックする場合、RhinoMocks3.6.0および3.6.1の例外があります。

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

Genericの「where」アソシエーションを削除すると、正しくモックされることを確認できます。

スタックトレースは、CastleDynamicProxyをしっかりと指し示しています。

System.BadImageFormatExceptionがユーザーコードによって処理されませんでしたHResult=-2147024885メッセージ=不正な形式のプログラムを読み込もうとしました。(HRESULTからの例外:0x8007000B)Source = mscorlib StackTrace:at System.Reflection.Emit.TypeBuilder.TermCreateClass(RuntimeModule module、Int32 tk、ObjectHandleOnStack type)at System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()at System.Reflection.Emit Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType()の.TypeBuilder.CreateType()Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType()のCastle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.GenerateCode(Type proxyTargetType、Type [ ]インターフェイス、Castle.DynamicProxy.DefaultProxyBuilderのProxyGenerationOptionsオプション)。1.<GenerateMock>b__6(MockRepository r) at Rhino.Mocks.MockRepository.CreateMockInReplay[T](Func2 createMock)at Rhino.Mocks.MockRepository.GenerateMock [T](Object [] argumentsForConstructor)at XXXXX.ConfigTestBase.SetUp()in c:\ git \ MyFork \ Workspace \ Db.Montage.Common.Tests \ Config\ConfigTestBase。 cs:27行目InnerException:

4

1 に答える 1

1

これは、ずっと前に修正された古いバージョンのDynamicProxyの古いバグです。

残念ながら、Rhino Mocksは、DynamicProxyへの依存関係を、この問題が修正された最新バージョンにまだ更新していないようです。

2つのオプションは、Rhinoのカスタムバージョンを(新しいDynamicProxyに対して)構築するか、DynamicProxyのより新しいバージョン(NSubstitute、FakeItEasy、Moqなど)を使用する別のモックフレームワークを使用することだと思います。

于 2013-02-02T03:06:23.837 に答える