Wie kann ich eine Member-Variablen einer Klasse spotten?Mock-Member-Variablen
Es scheint, dass diese FooA()
nie aufgerufen wird.
Hinweis: Ich bin Anfänger in moq (und rostig in C#), so bitte Geduld mit mir ;-)
Unbehandelte Ausnahme: Moq.MockVerificationException: Die folgenden Setups nicht angepasst wurden: IA a => (a.FooA)
Hier ist der Quellcode:
using Moq;
namespace TestMock
{
interface IA {
void FooA();
}
class A : IA {
public void FooA() { }
}
class B {
public void FooB() {
a.FooA();
}
IA a = new A();
}
class Program
{
static void Main(string[] args)
{
// Arrange
var mockA = new Mock<IA>();
mockA.Setup(a => a.FooA());
var mockB = new Mock<B>();
// Act
B b = new B();
b.FooB();
// Assert
mockA.VerifyAll();
}
}
}
Sie verwenden nicht die 'mockA' Sie in Ihrem Haupt-Methode zu erstellen, anstatt die Klasse 'B' erzeugt immer eine neue Instanz der Klasse "A" an sich. Daher wird die Methodenaufruf-Einstellung für 'mockA' in der Tat nie gemacht, weshalb die Verifizierung fehlschlägt. – bassfader
Das liegt daran, dass Sie manuell eine neue Instanz von "B" erstellen und den Mock nicht verwenden. Sie müssten die Abhängigkeiten injizieren. – Nkosi