2017-05-16 11 views
0

私はモックしたいクラスをいくつか持っており、内部にはいくつかの引数が必要です。そのため私は、テストの下で、私のシステムにInternalsVisibleTo -attributeを追加し、次のコードを書きました:私はドントので、私はNotSupporetedExceptionを取得するデバッグするとき内部コンストラクタを使用したモッククラス

public class MyClass 
{ 
    internal MyClass(int i) { ... } 
} 

MyClassはこれです

var target = Substitute.For<MyClass>(testArgs); 

をデフォルトのコンストラクタです。しかし、私は内部のもの(InternalsVisibleToのために私のテストアセンブリに見える)を持っているので、私は代わりにその1つが使用されることを期待しています。

もちろん、私はコンストラクタをpublicにすることができますが、これは私のAPIの任意のユーザーが避けることを望むMyClassのインスタンスを作成することを許可します。これがうまくいくために私が見逃したことはありますか?私たちは、ドント

答えて

0

がAPIにclass'コンストラクタを公開する必要があり、私たちがしなければならないすべてはMyClassが配置されているアセンブリ内MyClassまたはのクラスから派生するクラスにそれが見えるようにコンストラクタinternal protectedを作るです。したがって、NS substituteはMyClassから派生し、コンストラクタ呼び出しをベースコンストラクタにリダイレクトするクラスを作成することができます。

関連する問題