Hi, ich bin neu in Moq Tests und habe es schwer, eine einfache Behauptung zu machen. Ich benutze eine Schnittstelle
%Vor% Moq für die Schnittstelle IAdd
ist:
Da die Methode add
ungültig ist, gibt sie keinen Wert zurück, für den Assert verwendet werden soll. Wie kann ich diese Einstellung bestätigen?
Warum wird gespottet? Es wurde verwendet, um zu überprüfen, ob SUT (zu testendes System) korrekt mit seinen Abhängigkeiten interagiert (was verspottet werden sollte). Korrekte Interaktion bedeutet, dass korrekte Abhängigkeitselemente mit korrekten Parametern aufgerufen werden.
Sie sollten niemals auf den von mock zurückgegebenen Wert festlegen. Das ist ein Dummy-Wert, der keine Beziehung zum Produktionscode hat. Der einzige Wert, den Sie geltend machen sollten, ist ein Wert, der von SUT zurückgegeben wird. SUT ist die einzige Sache, für die Sie Behauptungen schreiben sollten.
Auch sollten Sie niemals Schnittstellen testen . Weil es nichts zu testen gibt. Schnittstelle ist nur eine API-Beschreibung. Es hat keine Implementierung. Hören Sie also auf und überlegen Sie, welchen Code Sie hier testen? Ist das ein echter Code, der in Ihrer Anwendung ausgeführt wird?
Also sollten Sie IAdd
interface nur für Testobjekte vortäuschen, die IAdd
interface benutzen.
Lieber mehr Kontext bereitstellen, aber normalerweise wird es so verwendet:
%Vor%Tags und Links c# unit-testing nunit moq