私はクラス "ClassA"(クラスAのctrに注入される)に依存する "ClassA"というクラスがあります。私はClassAを孤立してテストできるようにClassBを模擬したい。どちらのクラスも内部的です。ユニットテストのために内部クラスをMoqでモックする
もし私が間違っていればそれを修正しますが、Moqは公開されていればそれを模擬できるだけで、パブリックなパラメータのないコンストラクタを持っていて、模擬するメソッドはpublic virtual
です。私は本当にこれらのクラスを公開したいとは思わない。私はMoqで何かを逃しているのですか?それとも、私がやりたいことに適していませんか?
私はClassBが実装しているインターフェイス(「IClassB」と言う)を作成してClassAに注入し、代わりにインターフェイスをモックすることができたと思います。 ClassBは依然として内部にあることができます(ただし、インタフェースメソッドは公開する必要があります)。これがうまくいく間、単体テスト・モックをサポートすることを目的とする多くのインターフェースを作成することには不安が感じられます。思考?
おかげさまで、ありがとうございました。しかし、私は今クラスを公開することを決めました(少なくともテストされているもの)。私はすべてを社内にしようとしたときに掛かっていたと思うが、それは唯一のデスクトップアプリケーションなので、顧客に与えられていたアセンブリ/ APIのように重要ではない。 –
非常に有用な投稿、私は非常にInternalsVisibleTo( "IntegrationTests")が動作していないと混乱していた。その後、それは私のアセンブリにアクセスするのではなく、城の動的に作成されたアセンブリであることが理にかなっていました。 –