Moq Prüfung void-Methode
Hallo ich bin neu Moq testen und harte Zeit zu tun, eine einfache Behauptung.
Ich bin über eine Schnittstelle
public interface IAdd
{
void add(int a, int b);
}
Moq für die IAdd
Schnittstelle:
Mock<IAdd> mockadd = new Mock<IAdd>();
mockadd.Setup(x => x.add(It.IsAny<int>(), It.IsAny<int>()).callback((int a, int b) => { a+b;});
IAdd testing = mockadd.Object;
Da die add
Methode ist nichtig, es kommt nicht jeden beliebigen Wert zu versichern. Wie kann ich behaupten, dieses setup?
- Was wollen Sie testen?
- Ich bin versucht, um zu testen, dass die add-Methode, aber es hat keinen Rückgabetyp. Wenn es int als Rückgabetyp, würde ich prüfen, Geltend zu machen.AreEqual(mockadd.add(2,2), 4); Aber ohne Rückgabetyp wie kann ich testen Sie die add-Methode.
- 1. Es macht keinen Sinn zu testen, ein interface (oder ein mock-Implementierung). 2. Wenn Sie eine Klasse haben berechnet, dass etwas, möchten Sie vielleicht, um das Ergebnis zur Verfügung irgendwie (entweder über return-Wert oder eine Eigenschaft auf das Objekt)
- Seltsam, Fügen Sie nichts zurückgibt ??? Brauchen, um für eine bessere Methode den Namen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum Verspottung verwendet wird? Es verwendet, um zu überprüfen, dass SUT (system under test) interagiert richtig mit Ihren Abhängigkeiten (die werden verspottet). Richtige Interaktion wird der Aufruf der korrekten Abhängigkeit der Mitglieder mit korrekten Parametern.
Sollten Sie nie behaupten, das auf den zurückgegebenen Wert von mock. Das ist der dummy-Wert, die hat keinen Bezug auf die Produktion von code. Der einzige Wert ist, sollten Sie geltend machen, die auf eine zurückgegebene Wert von SUT. SUT ist die einzige Sache, die Sie sollten schreiben der Zusicherungen für.
Ebenfalls sollten Sie nie testen-Schnittstellen. Da gibt es nichts zu testen. Schnittstelle ist nur eine API-Beschreibung. Es hat keine Implementierung. Also, aufhören und darüber nachdenken, welchen code testen Sie hier? Ist dies ein echter code, die in der Anwendung ausgeführt?
So, Sie sollten mock
IAdd
- Schnittstelle nur für den Test-Objekt, das verwendetIAdd
- Schnittstelle.Besser, mehr Kontext, aber in der Regel ist es wie folgt verwendet: