How to Mock an internal interface with NMock2?
I was attempting to mock an internal interface with NMock2 and no matter what I tried I continued to get the following failure.
Test 'M:ExampleOfIVT.PersonTests.FirstTest' failed: Type is not public, so a proxy cannot be generated. Type: ExampleOfIVT.IPerson Castle.DynamicProxy.Generators.GeneratorException: Type is not public, so a proxy cannot be generated. Type: ExampleOfIVT.IPerson at Castle.DynamicProxy.DefaultProxyBuilder.AssertValidType(Type target) at Castle.DynamicProxy.DefaultProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options) at NMock2.Monitoring.CastleMockObjectFactory.GetProxyType(CompositeType compositeType) at NMock2.Monitoring.CastleMockObjectFactory.CreateMock(Mockery mockery, CompositeType typesToMock, String name, MockStyle mockStyle, Object[] constructorArgs) at NMock2.Internal.MockBuilder.Create(Type primaryType, Mockery mockery, IMockObjectFactory mockObjectFactory) at NMock2.Mockery.NewMock[TMockedType](IMockDefinition definition) at NMock2.Mockery.NewMock[TMockedType](Object[] constructorArgs) PersonTests.cs(59,0): at ExampleOfIVT.PersonTests.FirstTest()
Obviously I have a project, ExampleOfIVT, and a test project, ExampleOfIVTTests.
All the Google searching suggested that I should be adding these lines to my AssemblyInfo.cs file in the ExampleOfIVT project but these line did NOT work.
Please not that I downloaded NMock2 from here: http://sourceforge.net/projects/nmock2/
[assembly: InternalsVisibleTo("Mocks")] [assembly: InternalsVisibleTo("MockObjects")]
Turns out that they have changed to use Castle.DynamicProxy and so the only assembly I needed was this one.
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
Return to C# Unit Test Tutorial
[...] How to Mock an internal interface with NMock2? [...]