5

次のクラスがあるとします。

public abstract class Test
{
    internal abstract int Prop 
    {
        get;
    }
}

ここで、NSubstitute を使用してモックを作成してみます。

var mock = Substitute.For<Test>();

しかし、それは失敗します:

アセンブリ 'DynamicProxyGenAssembly2、Version=0.0.0.0、Culture=neutral、PublicKeyToken=a621a9e7e5c32e69' のタイプ 'Castle.Proxies.TestProxy' のメソッド 'get_Prop' には実装がありません。

に追加NSubstituteすることを考えまし[InternalsVisibleTo]たが、残念ながら、テストしたアセンブリは署名されていますが、署名されていないクラスでNSubstituteはなく、署名されていないクラスにInternalsすることもできませんVisibleTo

どうすればこの問題を解決できますか?

4

1 に答える 1

9

私は解決策を見つけました。テストしたいAssembly.csアセンブリのファイルに次の行を追加する必要があります(テストアセンブリではありません)。

[assembly:InternalsVisibleTo("DynamicProxyGenAssembly2,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
于 2013-11-14T09:43:55.070 に答える