Testen private Methode mit Moq funktioniert nicht
Ich bin mit Moq und ich bin sozusagen der neue.
Ich brauche zum testen einer private-Methode.
Ich habe 2 Baugruppen:
CustomerTest.dll
CustomerBusiness.dll
So
CustomerTest dll ist eine Klasse wie folgt:
[TestFixture]
public class CustomerTestFixture
{
var customerMock=new Mock<ICustomer>()
customerMock.Protected().Setup<bool>("CanTestPrivateMethod").Returns(true);
etc...
}
CustomerBusiness.dll hat
öffentliche Schnittstelle ICustomer
{
void Kaufen();
}
public class Customer:ICustomer
{
public void Buy()
{
etc...
}
protected virtual bool CanTestPrivateMethod()
{
return true;
}
}
Bekomme ich die folgende Fehlermeldung
System.ArgumentException : Member ICustomer.CannotTestMethod does not exist.
at Moq.Protected.ProtectedMock`1.ThrowIfMemberMissing(String memberName, MethodInfo method, PropertyInfo property)
at Moq.Protected.ProtectedMock`1.Setup(String methodOrPropertyName, Object[] args)
Außerdem habe ich [assembly: InternalsVisibleTo("CustomerTest.CustomerTestFixture")
aber mit keinen Unterschied!
Was mache ich falsch. Ich weiß, dass mein Interface hat keine solche Methode.Das ist der Punkt, wie meine Methode muss privat sein. Können Sie helfen mit einem Beispiel?
InformationsquelleAutor user9969 | 2010-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie erstellen ein mock-Objekt, implementiert virtuelle und abstrakte Mitgliedern der Typ oder die Schnittstelle zu spotten.
Durch die Schaffung einer
Mock<ICustomer>
es implementiert eine Methode, Schnittstelle zum Kunden. Es hat keine Kenntnis von der Methode, die Sie Hinzugefügt, in der Customer-Klasse. Wenn Sie brauchen, um zu spotten, dass die Methode, die Sie brauchen zu erstellen eineMock<Customer>
.Auch können Sie Schritt hinein.Dank
entfernen
InternalsVisibleTo
keinen Einfluss auf Ihre Fähigkeit, zu verspotten Zeug, aber vielleicht wichtig für andere Aspekte der Prüfung. Entfernen Sie shouldnt haben Auswirkungen, die nicht springen zur compile-Zeit.InformationsquelleAutor womp