Wie kann ich eine interne Schnittstelle mit NMock2 verspotten?
-
25-09-2019 - |
Frage
Wenn ich das versuche, bekomme ich nur eine Ausnahme:
System.TypeLoadException : Access is denied: 'Namespace.IInternalInterface'.
die Schnittstelle öffentlich zu machen ist keine akzeptable Lösung. Ich will nicht die visiblity meiner API, um es zu testen, um zu ändern.
Lösung 2
fand ich die Antwort auf diese Frage:
NMock2, (und andere spöttische Frameworks). Werden die Mock-Objekte in dynamisch generierten Baugruppen erstellen. Damit die Mockframework das Mock-Objekt zu erstellen, sollten die Interna diese Baugruppen sichtbar sein.
Fügen Sie einfach die folgenden Erklärungen zu der AssemblyInfo.cs-Klasse für das Modul unter Test:
// Allow unit test and mock assemblies to see internal members.
[assembly: InternalsVisibleTo("MyAssembly.UnitTest")]
[assembly: InternalsVisibleTo("NMock2")]
[assembly: InternalsVisibleTo("Mocks")]
[assembly: InternalsVisibleTo("MockObjects")]
Andere Tipps
Gefunden und die Lösung dokumentiert.
http://www.rhyous.com/2012/05 / 03 / NMock2-internal-Schnittstelle /
Es stellte sich heraus, dass die neuere Version von NMock2 (ich es hier habe: NMock2 Projekt ) nur Bedürfnisse ein und es ist anders.
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]