Hallo Stackoverflow werfen,MOQ: Wie ein Mock einer Schnittstelle zurück an die Schnittstelle
Ich versuche, Unit-Tests für eine private Methode zu schreiben, die eine Schnittstelle zu erwarten (EnvDTE.Project). Im theMOQ Framework einen Mock dieser Schnittstelle zu erstellen:
Mock<Project> mock = new Mock<Project>();
Nachdem im einige Propriétés Einstellung, Ich will diesen Mock werfe auf die Schnittstelle zurück. Ich versuche dies:
mock.As<Project>(); //to implement the Project interface
Project project = mock as Project; //this set Project to null
Project project = (Project)mock; //this throws InvalidCastException
Gibt es einen anderen Weg, um dieses Problem zu lösen? Vielen Dank für die Hilfe :)
Sie erstellen keine Mocks der Klassen selbst, sondern der Dienste, auf die sie angewiesen sind. Sie injizieren diese Abhängigkeiten dann normalerweise über die Konstruktorinjektion. – Wheels73
Ihre Frage ist nicht klar. Warum möchten Sie das verspottete Objekt zurück in die Schnittstelle konvertieren? Funktioniert es nicht ohne Konvertierung? Können Sie die spezifische Verwendung erklären, in der Sie diese Konvertierung durchführen müssen? Auch Schnittstellen haben keine private Methode. Wenn die Klasse, die die Schnittstelle implementiert, eine private Methode hat, sollte sie von Unit Testing dieser bestimmten Klasse nicht über die Schnittstelle getestet werden. –
Ich versuche eine private Methode zu testen. – Desiigner