title: Mocking internal classes with Moq for unit testing
body: <p>Say I have a class "ClassA", which has a dependency on a class "ClassB" (injected into the constructor of ClassA). I want to mock ClassB so that I can test ClassA in isolation. Both classes are internal.</p>
  
  <p>Correct me if I'm wrong but it looks like Moq can only mock a class if it is public, it has a public parameterless constructor, and the methods to be mocked are <code>public virtual</code>. I don't really want to make these classes publicly visible. Am I missing something with Moq, or is it just not suitable for what I want to do?</p>
  
  <p>I guess I could create an interface (say "IClassB") that ClassB implements, inject that into ClassA, and mock the interface instead. ClassB can still be internal (although I realise the interface methods would have to be public). While this would work, I feel uneasy about creating lots of interfaces, whose only purpose is to support unit test mocking. Thoughts?</p>