2

Rhino モックを使用してモック オブジェクトを生成できるように、Spring.Net の構成を設定するのに問題があります。GenerateMock は静的メソッドであるため、構成で factory-method を使用する必要があることを認識していますが、それを機能させることはできません。これは私が使用している構成です:

<object id="exampleObject"
        type="Rhino.Mocks.MockRepository, Rhino.Mocks"
factory-method="GenerateMock&amp;lt;MyAssembly.MyInterface>" />

次に、コード(単体テスト)で次を使用します。

using (IApplicationContext ctx = ContextRegistry.GetContext()) {....}

しかし、次のエラーメッセージが表示されます。

System.Configuration.ConfigurationErrorsException: Error creating context 'spring.root': Could not load type from string value 'MyAssembly.MyInterface'. --->  System.TypeLoadException: Could not load type from string value 'MyAssembly.MyInterface'..

エラーが発生する理由はありますか?

4

2 に答える 2

2

実際には、ジェネリック引数で型名のみを指定し、アセンブリ名は指定しません。読んだほうがいい

  factory-method="GenerateMock<[MyNamespace.MyInterface, MyAssembly]>"

完全修飾型名を引用する角括弧に注意してください。最近のナイトリー ビルドを取得する必要があります。

完全修飾名により、CLR は型を含むアセンブリを見つけることができます。それ以外の場合、Spring はその型名について既にロードされているアセンブリをスキャンします。アセンブリがまだ読み込まれていない場合は、エラー メッセージが表示されます。

于 2009-02-14T19:17:33.733 に答える
1

使用していた rhino モックのバージョンが不明ですが、Spring.NET が GenerateMock( params ...) の引数の変数 nr を正しく解釈しないため、これはもう機能していないようです。

これを理解し、次の回避策を使用するのに半日かかりました。

<object id="Logger" type="Rhino.Mocks.MockRepository, Rhino.Mocks"
            factory-method="GenerateMock&lt;Core.Common.Logging.ILog>" >
      <constructor-arg name="argumentsForConstructor">
            <list element-type="System.Object">             
            </list>
        </constructor-arg>
</object>

Springがメソッドシグネチャを認識できるように、基本的にオブジェクトの空の配列を明示的に渡す必要がありました...

于 2011-01-05T13:04:21.183 に答える