Wie von anderen vorgeschlagen, können Sie Ihre eigene Attrappe erstellen oder eine Reihe von Erwartungen an die Abhängigkeit stellen.
So können Sie beispielsweise überprüfen, ob Ihre Methode aufgerufen wurde:
var mock = new Mock<IDependency>();
var subject = new MyClass(mock.Object);
subject.Clear();
mock.Verify( dep => dep.Reset(), Times.AtMost(2));
Es sollte jedoch darauf hingewiesen werden, dass Arbeit innerhalb des Konstruktors ist ein bekannter Codegeruch und dieser Geruch wird noch verstärkt, wenn Sie versuchen, Tests zu schreiben.
Die Tatsache, dass Ihr Konstruktor diese Methode in der Abhängigkeit aufrufen muss, deutet darauf hin, dass dieses Objekt zu viele Informationen über die Implementierungsdetails der Abhängigkeit kennt. Dies verstößt gegen das Open-Closed-Prinzip und schließt Sie von Szenarien aus, in denen Sie nicht wollen, dass die Reset-Methode bei der Initialisierung aufgerufen wird.
Bedenken Sie auch, dass jede Klasse oder jeder Test, der das konkrete Objekt MyClass als Dummy-Parameter verwendet, ein initialisiertes Mock benötigt, da sonst eine NullReferenceException ausgelöst wird. Dies führt zu einem beträchtlichen Mehraufwand bei der Erstellung Ihrer Tests und zu einem Grad an Anfälligkeit, der zu langfristiger Wartung und falschen Negativmeldungen in Ihren Tests führt. Die einzige Möglichkeit, dies zu umgehen, besteht darin, alles zu einer Schnittstelle zu machen, was zwar effektiv ist, aber auch nicht die beste langfristige Strategie darstellt.
Gemäß http://googletesting.blogspot.com/2009/07/separation-anxiety.html Die Verwendung einer Factory würde einen Teil dieser Kopplung reduzieren und eine bessere Wiederverwendung dieses Objekts ermöglichen.